数据传输方法、装置、电子设备及存储介质

文档序号:142212 发布日期:2021-10-22 浏览:12次 >En<

阅读说明:本技术 数据传输方法、装置、电子设备及存储介质 (Data transmission method and device, electronic equipment and storage medium ) 是由 肖露 黄鹄 黄润怀 李旭 于 2021-07-16 设计创作,主要内容包括:本公开提供一种数据传输方法、装置、电子设备及存储介质。该数据传输方法包括:通过TCP/IP网络接收客户端发送的读写数据包;基于用户态对所述读写数据包进行解析,获得iSCSI读写指令;对所述iSCSI读写指令进行解析,获得SCSI读写指令;将所述SCSI读写指令发送至目标存储设备,以根据所述SCSI读写指令执行读写操作。该方法实现了协议栈全用户态化,网络IO路径大幅缩减,避免用户态和内核态交互。(The disclosure provides a data transmission method, a data transmission device, an electronic device and a storage medium. The data transmission method comprises the following steps: receiving a read-write data packet sent by a client through a TCP/IP network; analyzing the read-write data packet based on the user state to obtain an iSCSI read-write instruction; analyzing the iSCSI read-write instruction to obtain a SCSI read-write instruction; and sending the SCSI reading and writing instruction to target storage equipment so as to execute reading and writing operation according to the SCSI reading and writing instruction. The method realizes the full user state of the protocol stack, greatly reduces the network IO path and avoids the interaction of the user state and the kernel state.)

数据传输方法、装置、电子设备及存储介质

技术领域

本公开涉及分布式存储技术领域,尤其涉及一种数据传输方法、装置、电子设备及存储介质。

背景技术

分布式存储是将数据分散存储在多台独立的设备上,其采用可扩展的系统结构,利用多台存储服务器分担存储负荷。

相关技术中,对分布式块存储采用的是运行在内核态或者在此基础上叠加UIO(Userspace I/O,用户空间读写)的技术,做到半用户态化,性能较差、可扩展性不高。

需要说明的是,在上述

背景技术

部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。

发明内容

本公开的目的在于提供一种数据传输方法、装置、电子设备及存储介质,该数据传输方法实现了协议栈全用户态化,网络IO路径大幅缩减,避免用户态和内核态交互。

本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。

本公开实施例提供一种数据传输方法,包括:通过TCP/IP网络接收客户端发送的读写数据包;基于用户态对所述读写数据包进行解析,获得iSCSI读写指令;对所述iSCSI读写指令进行解析,获得SCSI读写指令;将所述SCSI读写指令发送至目标存储设备,以根据所述SCSI读写指令执行读写操作。

在本公开一些示例性实施例中,上述方法还包括:在执行所述SCSI读写指令后,生成SCSI响应;对所述SCSI响应进行封装,获得iSCSI响应;通过TCP/IP网络将所述iSCSI响应返回至所述客户端。

在本公开一些示例性实施例中,通过TCP/IP网络接收客户端发送的数据包,包括:基于生产者线程接收所述客户端的网卡发送的数据包;基于用户态对所述数据包进行解析,获得iSCSI读写指令,包括:基于所述生产者线程对所述数据包进行解析,获得iSCSI读写指令。

在本公开一些示例性实施例中,将所述SCSI读写指令发送至目标存储设备,包括:基于消费者线程将所述SCSI读写指令发送至目标存储设备。

在本公开一些示例性实施例中,所述生产者线程为PMD线程,所述消费者线程为Work Thread线程。

在本公开一些示例性实施例中,上述方法还包括:通过TCP/IP网络接收客户端发送的控制请求数据包;对所述控制请求数据包进行解析,获得控制请求;确定与所述控制请求对应的目标存储设备。

本公开实施例提供一种数据传输装置,其特征在于,包括:数据包接收模块,用于通过TCP/IP网络接收客户端发送的读写数据包;数据包解析模块,用于基于用户态对所述读写数据包进行解析,获得iSCSI读写指令;指令获得模块,用于对所述iSCSI读写指令进行解析,获得SCSI读写指令;指令发送模块,用于将所述SCSI读写指令发送至目标存储设备,以根据所述SCSI读写指令执行读写操作。

本公开实施例提供一种数据传输装置,其特征在于,包括:响应生成模块,用于在执行所述SCSI读写指令后,生成SCSI响应;响应封装模块,用于对所述SCSI响应进行封装,获得iSCSI响应;响应返回模块,用于通过TCP/IP网络将所述iSCSI响应返回至所述客户端。

本公开实施例提供一种电子设备,包括:至少一个处理器;存储装置,用于存储至少一个程序,当至少一个程序被至少一个处理器执行时,使得至少一个处理器实现上述任一种数据传输方法。

本公开实施例提供一种计算机可读存储介质,其上存储有计算机程序,其特征在于,计算机程序被处理器执行时实现上述任一种数据传输方法。

本公开实施例提供的数据传输方法,实现了协议栈全用户态化,网络IO路径大幅缩减,避免用户态和内核态交互;同时支持更大iSCSI链接,可配置、定制的认证;利用网卡VF特性,采用PMD高效数据报收发模式,充分发挥网卡带宽/收发报文能力。此外,相比传统的整列存储,更易于扩展,易于部署。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是根据一示例性实施方式示出的一种数据传输方法的流程图。

图2是根据一示例示出的一种IO系统处理图。

图3是根据一示例性实施方式示出的一种数据传输方法的流程图。

图4是根据一示例性实施方式示出的一种数据传输方法的流程图。

图5是根据一示例性实施方式示出的一种数据传输装置的框图。

图6是根据一示例性实施方式示出的一种电子设备的结构示意图。

具体实施方式

现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。

此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。

图1是根据一示例性实施方式示出的一种数据传输方法的流程图。

如图1所示,本公开实施例提供的数据传输方法可以包括以下步骤。

在步骤S102中,通过TCP/IP(Transmission Control Protocol/InternetProtocol,传输控制协议/网际协议)网络接收客户端发送的读写数据包。

图2是根据一示例示出的一种IO(Input/Output,输入/输出)系统处理图。

参考图2,本公开实施例的IO系统可以包括iSCSI(Internet Small ComputerSystem Interface,Internet小型计算机系统接口)initiator(启动器),Target(目标端)和存储集群,iSCSI initiator可以包括App(应用)IO、VFS(Virtual File System,虚拟文件系统)、file system(文件系统)、Block(块)IO、IO schedule(调度器)SCSI upper(上层)、SCSI mid(中层)和SCSI low(底层)。

其中,iSCSI技术可以将现有SCSI接口与以太网络(Ethernet)技术结合,基于TCP/IP的协议连接iSCSI服务端(Target)和客户端(Initiator),使得封装后的SCSI数据包可以在通用互联网传输,最终实现iSCSI服务端映射为一个存储空间(磁盘)提供给已连接认证后的客户端。

其中,upper层可以采用共享内存技术,把网卡的收发队列直接暴漏给用户态,bypass内核态;mid层可以把TCP/IP协议转换成iSCSI协议,并进一步完成iSCSI协议的解析,转换成CLIENT(客户端)通用可识别的请求;low层可以采用CAS(CentralAuthentication Service,中央认证服务)及线程分核免锁数据分发方案,极大增加target的处理能力,降低target客户机成本。可以利用CLIENT的数据转换功能,把请求发往不同的存储系统。

在示例性实施例中,可以基于生产者线程接收客户端的网卡发送的数据包。

其中,生产者线程可以为PMD线程。

在步骤S104中,基于用户态对读写数据包进行解析,获得iSCSI读写指令。

在示例性实施例中,基于生产者线程对数据包进行解析,获得iSCSI读写指令。

参考图2,PMD线程可以在用户态场景下接收网络包,并在用户态场景下解析出iSCSI指令。

在步骤S106中,对iSCSI读写指令进行解析,获得SCSI读写指令。

继续参考图2,PMD线程可以把iSCSI指令包解析出SCSI指令,然后根据SCSI指令的操作码执行相关操作(如读写操作等)。

在步骤S108中,将SCSI读写指令发送至目标存储设备,以根据SCSI读写指令执行读写操作。

在示例性实施例中,基于消费者线程将SCSI读写指令发送至目标存储设备。

其中,消费者线程可以为Work Thread线程,目标存储设备可以为块设备,例如存储集群中的硬盘。

继续参考图2,本公开实施例可以采用CAS多核免锁的消费者生产者模型。其中,Work Thread线程是消费者线程,主要消费PMD thread线程产生的请求,并处理该SCSI指令,并按照一定的规则进行数据拆分,然后按照路由规则把请求发送到存储设备。其中,Work Thread线程可以采用ring buffer(环形缓存)。

本公开实施例中,在将SCSI读写指令发送至目标存储设备后,目标存储设备可以根据SCSI读写指令执行读写操作。

本公开实施例中,可以设置PMD模块、LIBNET(接口函数库)模块、STGT模块和CLIENT模块来完成上述功能。

其中,PMD模块可以用于完成网卡VF队列请求收发,收到请求后将请求放到LITNET模块队列;LIBNET模块可以在用户态基础上完成TCP/IP协议栈的解析,解析成iSCSI协议的请求或者CMD后,把请求放到starge(存储)模块队列;STGT模块中的starge从队列中收到请求后,完成iSCSI数据格式的请求解析,解析成通用的数据格式发往CLIENT模块;CLIENT模块可以对接后端存储请求,主要完成数据格式的转换,以便对接不同的后端存储。

本公开实施例提供的数据传输方法,实现了协议栈全用户态化,网络IO路径大幅缩减,避免用户态和内核态交互;同时支持更大iSCSI链接,可配置、定制的认证;利用网卡VF特性,采用PMD高效数据报收发模式,充分发挥网卡带宽/收发报文能力。此外,相比传统的整列存储,更易于扩展,易于部署。

图3是根据一示例性实施方式示出的一种数据传输方法的流程图。

如图3所示,本公开实施例提供的数据传输方法可以包括以下步骤。

在步骤S302中,在执行SCSI读写指令后,生成SCSI响应。

本公开实施例中,在目标存储设备执行SCSI读写指令后,可以生成SCSI响应(Response)返回至CLIENT模块;CLIENT端可以从内核读取Response信息,解析出SCSI需要相关信息,并传递给Target。

在步骤S304中,对SCSI响应进行封装,获得iSCSI响应。

本公开实施例中,Target可以把SCSI命令封装成iSCSI指令,并把该指令发送给CLIENT模块,由CLIENT模块发送给远端。

在步骤S306中,通过TCP/IP网络将iSCSI响应返回至客户端。

本公开实施例中,CLIENT模块可以把iSCSI响应封装成TCP相关信息,生成网络消息报,并把请求存储到网卡队列;在网卡NIC(Network Interface Controller,网络接口控制器)收到请求后,通过物理网络把请求发送到远端。

本公开实施例提供的数据传输方法,可以实现高可用的iSCSI块设备挂载,保障系统故障时能够快速恢复,用户业务零感知,同时大幅提升性能。

图4是根据一示例性实施方式示出的一种数据传输方法的流程图。

如图4所示,本公开实施例提供的数据传输方法可以包括以下步骤。

在步骤S402中,通过TCP/IP网络接收客户端发送的控制请求数据包。

本公开实施例中,在进行读写操作之前,可以通过TCP/IP网络接收客户端发送的控制请求数据包,其中,控制请求可以包括鉴权请求。

在步骤S404中,对控制请求数据包进行解析,获得控制请求。

本公开实施例中,可以对控制请求数据包进行解析,获得通用格式的控制请求。

在步骤S406中,确定与控制请求对应的目标存储设备。

本公开实施例中,可以根据控制请求,确定与其对应的目标存储设备。在后续读写操作时,可以访问确定好的目标存储设备。

下述为本公开装置实施例,可以用于执行本公开方法实施例。对于本公开装置实施例中未披露的细节,请参照本公开方法实施例。

图5是根据一示例性实施方式示出的一种数据传输装置的框图。

如图5所示,数据传输装置700可以包括:数据包接收模块702、数据包解析模块704、指令获得模块706和指令发送模块708。

其中,数据包接收模块702用于通过TCP/IP网络接收客户端发送的读写数据包;数据包解析模块704用于基于用户态对所述读写数据包进行解析,获得iSCSI读写指令;指令获得模块706用于对所述iSCSI读写指令进行解析,获得SCSI读写指令;指令发送模块708用于将所述SCSI读写指令发送至目标存储设备,以根据所述SCSI读写指令执行读写操作。

在示例性实施例中,数据传输装置700还可以包括:响应生成模块,用于在执行所述SCSI读写指令后,生成SCSI响应;响应封装模块,用于对所述SCSI响应进行封装,获得iSCSI响应;响应返回模块,用于通过TCP/IP网络将所述iSCSI响应返回至所述客户端。

在示例性实施例中,通过TCP/IP网络接收客户端发送的数据包,包括:基于生产者线程接收所述客户端的网卡发送的数据包;基于用户态对所述数据包进行解析,获得iSCSI读写指令,包括:基于所述生产者线程对所述数据包进行解析,获得iSCSI读写指令。

在示例性实施例中,将所述SCSI读写指令发送至目标存储设备,包括:基于消费者线程将所述SCSI读写指令发送至目标存储设备。

在示例性实施例中,所述生产者线程为PMD线程,所述消费者线程为Work Thread线程。

在示例性实施例中,数据传输装置700还可以包括:控制请求数据包接收模块,用于通过TCP/IP网络接收客户端发送的控制请求数据包;控制请求数据包解析模块,用于对所述控制请求数据包进行解析,获得控制请求;目标存储设备确定模块,用于确定与所述控制请求对应的目标存储设备。

需要注意的是,上述附图中所示的框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。

图6是根据一示例性实施方式示出的一种电子设备的结构示意图。需要说明的是,图6示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。

如图6所示,电子设备800包括中央处理单元(CPU)801,其可以根据存储在只读存储器(ROM)802中的程序或者从存储部分808加载到随机访问存储器(RAM)803中的程序而执行各种适当的动作和处理。在RAM803中,还存储有系统800操作所需的各种程序和数据。CPU801、ROM802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。

以下部件连接至I/O接口805:包括键盘、鼠标等的输入部分806;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分807;包括硬盘等的存储部分808;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分809。通信部分809经由诸如因特网的网络执行通信处理。驱动器810也根据需要连接至I/O接口805。可拆卸介质811,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器810上,以便于从其上读出的计算机程序根据需要被安装入存储部分808。

特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分809从网络上被下载和安装,和/或从可拆卸介质811被安装。在该计算机程序被中央处理单元(CPU)801执行时,执行本公开的系统中限定的上述功能。

需要说明的是,本公开所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。

附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括发送单元、获取单元、确定单元和第一处理单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定,例如,发送单元还可以被描述为“向所连接的服务端发送图片获取请求的单元”。

作为另一方面,本公开还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:通过TCP/IP网络接收客户端发送的读写数据包;基于用户态对所述读写数据包进行解析,获得iSCSI读写指令;对所述iSCSI读写指令进行解析,获得SCSI读写指令;将所述SCSI读写指令发送至目标存储设备,以根据所述SCSI读写指令执行读写操作。

以上具体地示出和描述了本公开示例性实施方式。可理解的是,本公开不限于这里描述的详细结构、设置方式或实现方法;相反,本公开意图涵盖包含在所附权利要求的精神和范围内的各种修改和等效设置。

12页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:基于可信存证的可监管隐私计算方法、系统及计算机设备

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类