数据处理方法及设备技术

技术编号:30946028 阅读:15 留言:0更新日期:2021-11-25 19:56
本申请实施例提供了一种数据处理方法及设备,该方法包括第一设备的网卡向第二设备发送第一请求报文;该第一请求报文用于请求读取在该第二设备的第一目的存储区域的第一数据;该网卡接收该第二设备响应该第一请求报文发送的第一响应报文;该第一响应报文包括该第一数据;该网卡根据该第一响应报文对第一存储地址发起直接存储器访问DMA将该第一数据写入该第一存储地址指向的内存区域,该第一存储地址指向的内存区域属于该第一设备的主机的内存区域;该第一数据无需缓存到该网卡的内存。采用本申请实施例,能够减少网卡内存的带宽资源和存储空间的占用。和存储空间的占用。和存储空间的占用。

【技术实现步骤摘要】
数据处理方法及设备
[0001]本申请要求于2020年5月19日提交中国专利局、申请号为202010427381.7、申请名称为“一种基于RDMA的NVMe存储业务虚拟化处理方法和装置”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。


[0002]本专利技术涉及数据处理
,尤其涉及一种数据处理方法及设备。

技术介绍

[0003]基于非易失性内存处理器控制器接口规范(non volatile memory host controller interface specification,NVMHCIS或者简称为NVMe)的架构(NVMe over Fabric)是近来出现的热门的存储技术,它能够实现远端存储器的资源共享。NVMe over fabric主要包括的是基于远程直接数据存取(remote direct memory access,RDMA)的NVMe(NVMe over RDMA),通过RDMA技术实现访问远端设备的存储器。常用的NVMe over RDMA的RDMA技术是承载融合以太网上的RDMA(RDMA over Converged Ethernet,RoCE)技术、互联网广域RDMA协议(Internet Wide Area RDMA Protocol,iWARP)技术和无限带宽(InfiniBand,IB)技术等。
[0004]现有的技术方案中,通过NVMe over RDMA实现发起端设备对远端设备的存储器读写数据的过程中,需要通过网卡的内存中转读写的数据。例如,对于发起端设备对远端设备的存储器读数据的过程,需要先将从远端设备读取到的数据写入发起端设备网卡的内存中,再由该网卡的处理器将该写入的数据发送到发起端设备处理器的内存中。而对于发起端设备对远端设备的存储器写数据的过程,发起端设备网卡需要先将数据从处理器的内存中搬移到网卡自身的内存中,然后网卡的处理器再与远端设备的网卡交互实现将数据写入远端设备的存储器中。通过网卡的内存中转读写的数据,占用了网卡内存的带宽资源和空间,给网卡内存的带宽和存储空间带来了极大的压力。
[0005]综上所述,在通过NVMe over RDMA实现发起端设备对远端设备的存储器读写数据的过程中,如何减少网卡内存的带宽资源和存储空间的占用是本领域人员急需解决的技术问题。

技术实现思路

[0006]本申请提供一种数据处理方法及设备,能够减少网卡内存的带宽资源和存储空间的占用,降低了数据传输的时延。
[0007]第一方面,本申请提供一种数据处理方法,该方法包括:
[0008]第一设备的网卡向第二设备发送第一请求报文;上述第一请求报文用于请求读取第一数据,上述第一数据存储在上述第二设备的第一目的存储区域;上述网卡接收上述第二设备响应上述第一请求报文发送的第一响应报文;上述第一响应报文包括上述第一数据;上述网卡根据上述第一响应报文对第一存储地址发起直接存储器访问DMA将上述第一
数据写入上述第一存储地址指向的内存区域,上述第一存储地址指向的内存区域属于上述第一设备的主机的内存区域;上述第一数据无需缓存到上述网卡的内存。
[0009]在本申请中,第一设备的网卡获取到第一数据后可以直接向第一存储地址发起DMA访问将该第一数据写入该第一存储地址,而不需要先将该第一数据缓存在网卡的内存中,从而可以减少了第一设备网卡内存的带宽资源和存储空间的占用,提高该网卡内存的带宽资源和存储空间的利用率,并且显著降低了数据传输的时延。
[0010]在一种可能的实施方式中,上述第一响应报文包括第一虚拟机内存编号,上述第一虚拟机内存编号指向上述主机配置给第一虚拟机的第一内存区域,上述第一内存区域包括上述第一存储地址指向的内存区域,上述网卡根据上述第一响应报文对第一存储地址发起直接存储器访问DMA将上述第一数据写入上述第一存储地址指向的内存区域,包括:上述网卡根据上述第一虚拟机内存编号向上述第一内存区域内的上述第一存储地址发起上述DMA将上述第一数据写入上述第一存储地址指向的内存区域。
[0011]在本申请中,在数据无需经第一设备的网卡内存中转的情况下,还可以实现对虚拟机的内存的直接存储器访问,以使的本申请进一步地支持复杂的存储业务处理。
[0012]在一种可能的实施方式中,在上述网卡将上述第一数据写入上述第一存储地址指向的内存区域之前,还包括:
[0013]上述网卡以上述第一虚拟机内存编号为索引查询到上述第一存储地址指向的内存区域在地址权限表包括的地址范围中,上述地址权限表包括上述网卡有权限发起上述DMA访问的地址范围。
[0014]在本申请中,通过校验网卡即将发起DMA访问的地址是否在可访问的范围内,在可访问的范围内才可以发起访问,保证的主机内存中的数据的安全性,避免了因不正常访问导致的数据泄密等问题。
[0015]在一种可能的实施方式中,上述第一请求报文包括上述第一虚拟机内存编号,上述第一虚拟机内存编号设置在上述第一请求报文的本地权限L_key字段中,上述L_key为上述网卡用于DMA访问上述主机内存的权限标识;上述第一虚拟机内存编号设置在上述第一响应报文的远端权限R_key字段中,上述R_key为上述第二设备的网卡用于远程访问上述主机内存的权限标识。
[0016]在本申请实施例中,可以采用虚拟机内存编号代替现有的L_key和R_key,并通过已有的但不再使用的字段(L_key字段和R_key字段)来承载虚拟机内存编号,从而可以提高该字段的使用率,避免因增加一个新的字段导致的资源占用过多的问题。
[0017]在一种可能的实施方式中,上述第一请求报文包括上述第一虚拟机内存编号,上述第一请求报文和上述第一响应报文包括虚拟机内存编号字段,上述第一虚拟机内存编号设置在上述虚拟机内存编号字段中;上述虚拟机内存编号字段为占用了上述第一请求报文和上述第一响应报文的长度length字段中的部分字节得到,上述length字段中除了上述虚拟机内存编号字段占用的字节之外的字节用于存储上述第一存储地址指向的内存区域包括的各个内存块的长度值;或者,上述虚拟机内存编号字段为占用了上述第一请求报文和上述第一响应报文的地址address字段中的部分字节得到,上述address字段中除了上述虚拟机内存编号字段占用的字节之外的字节用于存储上述第一存储地址指向的内存区域包括的各个内存块的起始地址的值。
[0018]在一种可能的实施方式中,上述第一请求报文包括上述第一虚拟机内存编号,上述第一请求报文和上述第一响应报文包括虚拟机内存编号字段,上述第一虚拟机内存编号设置在上述虚拟机内存编号字段中;上述第一请求报文中的上述虚拟机内存编号字段为占用了上述第一请求报文本地权限L_key字段中的部分字节得到,上述L_key字段中除了上述虚拟机内存编号字段占用的字节之外的字节用于存储上述网卡DMA访问上述第一存储地址指向的内存区域的权限标识,上述第一响应报文中的上述虚拟机内存编号字段为占用了上述第一响应报文远端权限R_key字段中的部分字本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据处理方法,其特征在于,包括:第一设备的网卡向第二设备发送第一请求报文;所述第一请求报文用于请求读取第一数据,所述第一数据存储在所述第二设备的第一目的存储区域;所述网卡接收所述第二设备响应所述第一请求报文发送的第一响应报文;所述第一响应报文包括所述第一数据;所述网卡根据所述第一响应报文对第一存储地址发起直接存储器访问DMA,将所述第一数据写入所述第一存储地址指向的内存区域,所述第一存储地址指向的内存区域属于所述第一设备的主机的内存区域;所述第一数据无需缓存到所述网卡的内存。2.根据权利要求1所述的方法,其特征在于,所述第一响应报文包括第一虚拟机内存编号,所述第一虚拟机内存编号指向所述主机配置给第一虚拟机的第一内存区域,所述第一内存区域包括所述第一存储地址指向的内存区域,所述网卡根据所述第一响应报文对第一存储地址发起直接存储器访问DMA将所述第一数据写入所述第一存储地址指向的内存区域,包括:所述网卡根据所述第一虚拟机内存编号向所述第一内存区域内的所述第一存储地址发起所述DMA将所述第一数据写入所述第一存储地址指向的内存区域。3.根据权利要求2所述的方法,其特征在于,在所述网卡将所述第一数据写入所述第一存储地址指向的内存区域之前,还包括:所述网卡以所述第一虚拟机内存编号为索引查询到所述第一存储地址指向的内存区域在地址权限表包括的地址范围中,所述地址权限表包括所述网卡有权限发起所述DMA访问的地址范围。4.根据权利要求2或3所述的方法,其特征在于,所述第一请求报文包括所述第一虚拟机内存编号,所述第一虚拟机内存编号设置在所述第一请求报文的本地权限L_key字段中,所述L_key为所述网卡用于DMA访问所述主机内存的权限标识;所述第一虚拟机内存编号设置在所述第一响应报文的远端权限R_key字段中,所述R_key为所述第二设备的网卡用于远程访问所述主机内存的权限标识。5.根据权利要求2或3所述的方法,其特征在于,所述第一请求报文包括所述第一虚拟机内存编号,所述第一请求报文和所述第一响应报文包括虚拟机内存编号字段,所述第一虚拟机内存编号设置在所述虚拟机内存编号字段中;所述虚拟机内存编号字段为占用了所述第一请求报文和所述第一响应报文的长度length字段中的部分字节得到,所述length字段中除了所述虚拟机内存编号字段占用的字节之外的字节用于存储所述第一存储地址指向的内存区域包括的各个内存块的长度值;或者,所述虚拟机内存编号字段为占用了所述第一请求报文和所述第一响应报文的地址address字段中的部分字节得到,所述address字段中除了所述虚拟机内存编号字段占用的字节之外的字节用于存储所述第一存储地址指向的内存区域包括的各个内存块的起始地址的值。6.根据权利要求2或3所述的方法,其特征在于,所述第一请求报文包括所述第一虚拟机内存编号,所述第一请求报文和所述第一响应报文包括虚拟机内存编号字段,所述第一虚拟机内存编号设置在所述虚拟机内存编号字段中;所述第一请求报文中的所述虚拟机内存编号字段为占用了所述第一请求报文本地权
限L_key字段中的部分字节得到,所述L_key字段中除了所述虚拟机内存编号字段占用的字节之外的字节用于存储所述网卡DMA访问所述第一存储地址指向的内存区域的权限标识,所述第一响应报文中的所述虚拟机内存编号字段为占用了所述第一响应报文远端权限R_key字段中的部分字节得到,所述R_key字段中除了所述虚拟机内存编号字段占用的字节之外的字节用于存储所述第二设备的网卡远程访问所述第一存储地址指向的内存区域的权限标识。7.一种数据处理方法,其特征在于,包括:第一设备的网卡向第二设备发送第二请求报文;所述第二请求报文用于请求在第二设备的第二目的存储区域写入第二数据,所述第二数据存储在第二存储地址指向的内存区域,所述第二存储地址指向的内存区域属于所述第一设备的主机的内存区域;所述网卡接收所述第二设备响应所述第二请求报文发送的第二响应报文;所述第二响应报文包括所述第二存储地址;所述网卡根据所述第二响应报文对所述第二存储地址发起直接存储器访问DMA读取所述第二数据;所述网卡向所述第二设备发送读取的所述第二数据,所述第二数据无需缓存到所述网卡的内存。8.根据权利要求7所述的方法,其特征在于,所述第二响应报文包括第二虚拟机内存编号,所述第二虚拟机内存编号指向所述主机配置给第二虚拟机的第二内存区域,所述第二内存区域包括所述第二存储地址指向的内存区域,所述网卡根据所述第二响应报文对所述第二存储地址发起直接存储器访问DMA读取所述第二数据,包括:所述网卡根据所述第二虚拟机内存编号向所述第二内存区域内的所述第二存储地址发起所述DMA读取所述第二数据。9.根据权利要求8所述的方法,其特征在于,在所述网卡根据所述第二虚拟机内存编号向所述第二内存区域内的所述第二存储地址发起所述DMA读取所述第二数据之前,还包括:所述网卡以所述第二虚拟机内存编号为索引查询到所述第二存储地址指向的内存区域在地址权限表包括的地址范围中,所述地址权限表包括所述网卡有权限发起所述DMA访问的地址范围。10.根据权利要求8或9所述的方法,其特征在于,所述第二请求报文包括所述第二虚拟机内存编号,所述第二虚拟机内存编号设置在所述第二请求报文的本地权限L_key字段中,所述L_key为所述网卡用于访问所述主机内存的权限标识;所述第二虚拟机内存编号设置在所述第二响应报文的远端权限R_key字段中,所述R_key为所述第二设备的网卡用于远程访问所述第二虚拟机内存编号的权限标识。11.根据权利要求8或9所述的方法,其特征在于,所述第二请求报文包括所述第二虚拟机内存编号,所述第二请求报文和所述第二响应报文包括虚拟机内存编号字段,所述第二虚拟机内存编号设置在所述虚拟机内存编号字段中;所述虚拟机内存编号字段为占用了所述第二请求报文和所述第二响应报文的长度length字段中的部分字节得到,所述length字段中除了所述虚拟机内存编号字段占用的字节之外的字节用于存储所述第二存储地址指向的内存区域包括的各个内存块的长度值;
或者,所述虚拟机内存编号字段为占用了所述第二请求报文和所述第二响应报文的地址address字段中的部分字节得到,所述address字段中除了所述虚拟机内存编号字段占用的字节之外的字节用于存储所述第二存储地址指向的内存区域包括的各个内存块的起始地址的值。12.根据权利要求8或9所述的方法,其特征在于,所述第二请求报文包括所述第二虚拟机内存编号,所述第二请求报文和所述第二响应报文包括虚拟机内存编号字段,所述第二虚拟机内存编号设置在所述虚拟机内存编号字段中;所述第二请求报文中的所述虚拟机内存编号字段为占用了所述第二请求报文本地权限L_key字段中的部分字节得到,所述L_key字段中除了所述虚拟机内存编号字段占用的字节之外的字节用于存储所述网卡DMA访问所述第二存储地址指向的内存区域的权限标识,所述第二响应报文中的所述虚拟机内存编号字段为占用了所述第二响应报文远端权限R_key字段中的部分字节得到,所述R_key字段中除了所述虚拟机内存编号字段占用的字节之外的字节用于存储所述第二设备的网卡远程访问所述第二存储地址指向的内存区域的权限标识。13.一种数据处理方法,其特征在于,包括:第一设备的网卡接收来自所述第一设备主机的第三请求,所述第三请求用于请求在第二设备的第三目的存储区域写入第三数据,所述第三请求包括所述第三数据在所述第一设备的主机的内存中的第三存储地址;所述网卡根据所述第三请求对所述第三存储地址发起直接存储器访问DMA读取所述第三数据;所述网卡向所述第二设备发送读取的所述第三数据,所述第三数据无需经过所述网卡的内存。14.根据权利要求13所述的方法,其特征在于,所述第三请求中包括标识,所述标识用于指示所述网卡读取所述第三数据,所述网卡根据所述第三请求对所述第三存储地址发起直接存储器访问DMA读取所述第三数据,包括:所述网卡根据所述标识对所述第三存储地址发起所述DMA读取所述第三数据。15.根据权利要求13或14所述的方法,其特征在于,所述第三请求还包括第三虚拟机内存编号,所述第三虚拟机内存编号指向所述主机配置给第一虚拟机的第三内存区域,所述第三内存区域包括所述第三存储地址指向的内存区域,所述网卡对所述第三存储地址发起直接存储器访问DMA读取所述第三数据,包括:所述网卡根据所述第三虚拟机内存编号向所述第三内存区域内的所述第三存储地址发起直接存储器访问DMA读取所述第三数据。16.一种数据处理网卡,其特征在于,所述网卡为第一设备中的网卡,所述网卡包括:发送单元,用于向第二设备发送第一请求报文;所述第一请求报文用于请求读取第一数据,所述第一数据存储在所述第二设备的第一目的存储区域;接收单元,用于接收所述第二设备响应所述第一请求报文发送的第一响应报文;所述...

【专利技术属性】
技术研发人员:卢胜文
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:

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

1