一种数据传输方法及装置制造方法及图纸

技术编号:21298185 阅读:33 留言:0更新日期:2019-06-12 07:35
一种数据传输方法及装置,在该方法中,首先为该服务器的多核处理器中的每一个处理建立守护线程,然后,在需要将待存储的数据拷贝到应用程序的接收缓冲区时,可以生成若干个拷贝请求,将每个拷贝请求分配到多个处理器对应的多个守护线程进行拷贝,从而可以利用该多个处理器一起执行该拷贝过程,可以提高数据的传输速度,提升存储局域网络的存储性能,以适应高速以太网场景。

【技术实现步骤摘要】
一种数据传输方法及装置
本申请涉及存储
,尤其涉及一种数据传输方法及装置。
技术介绍
互联网用户以及业务数据的激增,对存储系统的数据读写速率的要求越来越高。网间协议存储局域网络(internetprotocolstorageareanetwork,IPSAN)存储系统由于其能够在高速(百兆、千兆或者万兆等)以太网上快速地进行数据存储、数据备份等操作的优点,被广泛使用。请参考图1,是IPSAN存储系统的一种示例。如图1所示,该IPSAN存储系统中包括客户端、存储服务器和至少一个存储设备,客户端、存储服务器和至少一个存储设备之间通过IP网络连接,其中,存储服务器和至少一个存储设备构成存储局域网络SAN,客户端基于因特网小型计算机系统接口(internetsmallcomputersysteminterface,iSCSI)协议与存储服务器通信,从而通过存储服务器对至少一个存储设备中的数据进行读写操作等。作为一种示例,当客户端需要将应用程序A的数据存储在至少一个存储设备时,客户端首先生成将该数据写入存储设备的SCSI指令,将SCSI指令和数据封装成iSCSI协议数据单元,然后,将iSCSI协议数据单元封装成IP报文,通过与存储服务器之间的IP网络发送给存储服务器。存储服务器的网卡在接收到该IP报文后,从该IP报文中得到该应用程序A的数据,然后将该应用程序A的数据存储至对应的存储设备,实现了存储网络与IP网络的无缝融合。请参考图2,在现有技术中,存储服务器对IP报文的处理过程如下:存储服务器的网卡在接收到客户端发送的IP报文后,首先通过直接内存存取(directmemoryaccess,DMA)方式,将该IP报文存储到存入存储服务器的至少一个套接字缓冲区(socketbuffer,SKB)(可以理解为通过驱动环形缓冲区将该IP报文存储到至少一个SKB),从而提交给存储服务器的内核进行处理。内核首先将SKB中的IP报文进行解封装,解析TCP协议,获取TCP包头中的四元组,然后根据该四元组将每一个SKB中的解析后的报文映射到TCP接收队列,等待处理。当处理到该解析后的报文时,内核根据每个SKB中的解析后的报文对应的四元组,确定该报文是发送给应用程序A的,内核通知存储服务器中的应用程序A。应用程序A通过调用与该应用程序A对应的套接字(socket)接口应答内核。从而,内核在接收该应答后,则对该TCP接收队列中的报文进行协议解析,解析iSCSI协议,得到iSCSI协议数据单元,然后将iSCSI协议数据单元的数据,通过该socket接口将该数据拷贝到该应用程序的缓冲区内,再由应用程序将该缓冲区中的数据存储到存储设备相应的存储空间中。为了保证数据不乱序,socket接口一般只能利用存储服务器的单个处理器作为内核,将一个应用程序的数据进行缓存到应用程序对应的缓冲区中的处理。这样,当数据较大时,例如,该数据的大小为1兆字节(megabyte,M),由于每个SKB中只能存储固定字节(例如,8千字节(kilobyte,kB))的数据,从而该数据对应有1024/8=128个SKB,则该处理器将不断地重复地从这128个SKB中拷贝数据,该拷贝过程会耗费该处理器大量的处理资源,也就是说处理器需要耗费较长的时间执行该拷贝过程,使得存储服务器到存储设备之间数据的传输速度受限,从而无法适用于高速以太网场景。
技术实现思路
本申请提供一种数据传输方法及装置,用以提高存储局域网络中数据传输的速度,提升存储局域网络的存储性能。第一方面,提供一种数据传输方法,该方法可以应用于存储系统的服务器中,该服务器通过多核处理器运行包括第一应用程序在内的至少一个应用程序,在需要向该第一应用程序传输数据时,首先获取该第一应用程序对应的待存储数据,生成M个拷贝请求,每一个拷贝请求用于请求将该待存储数据中的一部分数据拷贝到该第一应用程序对应的接收缓冲区,然后,将该M个拷贝请求提交给N个守护线程进行处理,该N个守护线程中的每一个守护线程与该多核处理器中的一个处理器绑定,以使每个守护线程根据接收到的拷贝请求将该待存储数据中的一部分数据写入该接收缓冲区,M、N为大于1的正整数。在上述技术方案中,首先为该服务器的多核处理器中的每一个处理建立守护线程,然后,在需要将待存储的数据拷贝到应用程序的接收缓冲区时,可以生成若干个拷贝请求,将每个拷贝请求分配到多个处理器对应的多个守护线程进行拷贝,从而可以利用该多个处理器一起执行该拷贝过程,可以提高数据的传输速度,提升存储局域网络的存储性能,以适应高速以太网场景。进一步,上述技术方案不需要专用硬件便能提高数据的传输速度,成本低,易于实现。在一种可能的设计中,首先将与该第一应用程序对应的接收缓冲区分为M份,得到M个接收子缓冲区,然后则根据该待存储数据及该M个接收子缓冲区,生成该M个拷贝请求。在上述技术方案中,可以通过将应用程序的接收缓冲区进行分区,然后根据该待存储数据的一部分数据与一个接收子缓冲区生成一个拷贝请求,从而将该拷贝过程分成多个拷贝请求,从而可以将该多个拷贝请求分发给多个处理器进行处理。在一种可能的设计中,先确定该第一应用程序对应的待存储数据的大小是否大于预设阈值,在大于预设阈值时,才将与该第一应用程序对应的接收缓冲区分为M份,然后生成M个拷贝请求。在上述技术方案中,当待存储的数据较大时,才需要根据该待存储数据生成M个拷贝请求,当待存储的数据较小时,则可以采用现有技术中的方式进行数据拷贝,从而可以根据待存储数据的大小来调整数据拷贝的方式,增加方案的灵活性。在一种可能的设计中,待存储数据在服务器中会以P个套接字缓冲区SKB的方式进行存储,每个SKB包括由客户端发送的待存储数据以及该待存储数据所属的应用程序的端口号,则可以根据每个SKB包括的应用程序的端口号,从该P个SKB中选择与所述第一应用程序的端口号相同的K个SKB,并将该K个SKB中包括的待存储数据,作为获取的与该第一应用程序对应的待存储数据,P、K为正整数。在上述技术方案中,在服务器中传输给应用程序的数据是以SKB的形式进行存储的,从而可以直接从该多个SKB中获取待存储的数据,实现方式简单。在一种可能的设计中,若将与该第一应用程序对应的接收缓冲区分为M份,则可以建立包括该待存储的数据的K个数据页面与该M个接收子缓冲区的映射关系,并基于该映射关系,生成M个拷贝请求,该K个数据页面中的每一个数据页面中包括该K个SKB中的至少一个SKB中的数据,从而使得每个拷贝请求与一个目标接收子缓冲区对应,且每个拷贝请求用于请求将与该拷贝请求对应的目标接收子缓冲区映射的至少一个数据页面中包括的待存储数据拷贝到该目标接收子缓冲区。在上述技术方案中,处理器可以直接根据该守护线程所分配到的拷贝请求,对至少一个SKB中的数据进行操作,从而可以不用在内核中进行拷贝,可以减少socket的锁冲突时间。在一种可能的设计中,该包括服务器的存储系统还包括存储设备,则当将M个拷贝请求提交给N个守护线程进行处理后,可以接收该N个守护线程中的一个守护线程发送的用于指示该N个守护线程已经完成该M个拷贝请求第一指示信息,从而,向该第一应用程序发送第二指示信息,以使第一你应用程序根据该第二指示信息,将该第一本文档来自技高网
...

【技术保护点】
1.一种数据传输方法,其特征在于,包括:获取存储系统中的服务器上的第一应用程序对应的待存储数据,所述服务器通过多核处理器运行包括所述第一应用程序在内的至少一个应用程序;生成M个拷贝请求,每一个拷贝请求用于请求将所述待存储数据中的一部分数据拷贝到所述第一应用程序对应的接收缓冲区,所述M为大于1的整数;将所述M个拷贝请求提交给N个守护线程进行处理,以使每个所述守护线程根据接收到的拷贝请求将所述待存储数据中的一部分数据写入所述接收缓冲区,所述N个守护线程中的每一个守护线程与所述多核处理器中的一个处理器绑定,所述N为大于1的正整数。

【技术特征摘要】
1.一种数据传输方法,其特征在于,包括:获取存储系统中的服务器上的第一应用程序对应的待存储数据,所述服务器通过多核处理器运行包括所述第一应用程序在内的至少一个应用程序;生成M个拷贝请求,每一个拷贝请求用于请求将所述待存储数据中的一部分数据拷贝到所述第一应用程序对应的接收缓冲区,所述M为大于1的整数;将所述M个拷贝请求提交给N个守护线程进行处理,以使每个所述守护线程根据接收到的拷贝请求将所述待存储数据中的一部分数据写入所述接收缓冲区,所述N个守护线程中的每一个守护线程与所述多核处理器中的一个处理器绑定,所述N为大于1的正整数。2.根据权利要求1所述的方法,其特征在于,生成M个拷贝请求,包括:将与所述第一应用程序对应的接收缓冲区分为M份,得到M个接收子缓冲区;根据所述待存储数据及所述M个接收子缓冲区,生成所述M个拷贝请求。3.根据权利要求2所述的方法,其特征在于,在将与所述第一应用程序对应的接收缓冲区分为M份之前,所述方法还包括:确定所述第一应用程序对应的待存储数据的大小大于预设阈值。4.根据权利要求2或3所述的方法,其特征在于,获取存储系统中的服务器上的第一应用程序对应的待存储数据,包括:在P个套接字缓冲区SKB选择K个SKB,其中,所述P个SKB中的每个SKB包括由客户端发送的待存储数据以及该待存储数据所属的应用程序的端口号,P、K为正整数,所述K个SKB中的每个SKB包括的应用程序的端口与所述第一应用程序的端口号相同;将K个SKB中包括的待存储数据,作为获取的与所述第一应用程序对应的待存储数据。5.根据权利要求4所述的方法,其特征在于,生成M个拷贝请求,包括:建立所述K个数据页面与所述M个接收子缓冲区的映射关系,所述K个数据页面中的每一个数据页面中包括所述K个SKB中的至少一个SKB中的数据;基于所述映射关系,生成M个拷贝请求,每个拷贝请求与一个目标接收子缓冲区对应,并用于请求将与所述目标接收子缓冲区映射的至少一个数据页面中包括的待存储数据拷贝到所述目标接收子缓冲区。6.根据权利要求1-5中任一项所述的方法,其特征在于,所述存储系统还包括存储设备;所述方法还包括:接收所述N个守护线程中的一个守护线程发送的第一指示信息,所述第一指示信息用于指示所述N个守护线程已经完成所述M个拷贝请求;向所述第一应用程序发送第二指示信息,所述第二指示信息用于指示所述第一应用程序将所述第一应用程序对应的缓冲区中缓存的所述待存储数据写入所述存储设备中与所述第一应用程序对应的存储空间中。7.根据权利要求1-6中任一项所述的方法,其特征在于,与所述第一应用程序对应的接收缓冲区包括针对所述第一应用程序的数据进行输入/输出I/O请求的I/O缓冲区。8.一种数据传输装置,其特征在于,包括:通信模块,用于获取存储系统中的服务器上的第一应用程序对应的待存储数据,所述服务器通过多核处理器运行包括所述第一应用程序在内的至少一个应用程序;处理模块,用于生成M个拷贝请求,每一个拷贝请求用于请求将所述待存储数据中的一部分数据拷贝到所述第一应用程序对应的接收缓...

【专利技术属性】
技术研发人员:魏翔
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1