CN117573043A - 分布式存储数据的传输方法、装置、系统、设备和介质 - Google Patents

分布式存储数据的传输方法、装置、系统、设备和介质 Download PDF

Info

Publication number
CN117573043A
CN117573043A CN202410065117.1A CN202410065117A CN117573043A CN 117573043 A CN117573043 A CN 117573043A CN 202410065117 A CN202410065117 A CN 202410065117A CN 117573043 A CN117573043 A CN 117573043A
Authority
CN
China
Prior art keywords
data
read
storage
network card
memory
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.)
Pending
Application number
CN202410065117.1A
Other languages
English (en)
Inventor
李�杰
张在贵
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Jinan Inspur Data Technology Co Ltd
Original Assignee
Jinan Inspur Data Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Jinan Inspur Data Technology Co Ltd filed Critical Jinan Inspur Data Technology Co Ltd
Priority to CN202410065117.1A priority Critical patent/CN117573043A/zh
Publication of CN117573043A publication Critical patent/CN117573043A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)

Abstract

本发明涉及数据存储技术领域,公开了分布式存储数据的传输方法、装置、系统、设备和介质,将读写存储缓冲区的内存地址预先注册到网卡;读写存储缓冲区具有电容保电特性。依据控制消息获取源端设备的源端内存地址;根据源端内存地址从源端设备拉取数据至自身设备的网卡。依据注册到网卡的内存地址以及数据的数据量所匹配的存储方式,将数据存储至对应的读写存储缓冲区;基于用户态驱动控制将读写存储缓冲区的数据下刷至非易失性存储介质。由于网卡中注册了读写存储缓冲区的内存地址,因此网卡可以直接将数据存储至读写存储缓冲区,整个实现过程减少了中央处理器和主机内存的参与,减少了主机内存拷贝带来的时延,提升了数据传输效率。

Description

分布式存储数据的传输方法、装置、系统、设备和介质
技术领域
本发明涉及数据存储技术领域,特别是涉及分布式存储数据的传输方法、装置、系统、设备和介质。
背景技术
随着全闪技术的发展,闪存的容量做的越来越大,价格越来越低,全闪存储逐步成为大众客户考虑的范畴。尤其是在人工智能(Artificial Intelligence,AI)场景对于带宽和每秒操作数(Operations Per Second,OPS)要求比较高的高性能计算(HighPerformance Computing,HPC)场景中,全闪更是成为首选。
在全闪存储产品中,远程直接数据存取(Remote Direct Memory Access,RDMA)技术是比较常用的技术,数据跨节点传输卸载到RDMA网卡中,极大减少中央处理器(CentralProcessing Unit,CPU)接入,但是接收或者发送仍然需要主机内存的介入,落盘时由主机内存通过直接存储器访问(Direct Memory Access,DMA)方式拷贝到盘的内存里然后落盘。主机内存拷贝过程,对带宽需求量高,产生的时延也较高,导致数据传输效率偏低。
可见,如何提升数据传输效率,是本领域技术人员需要解决的问题。
发明内容
本发明实施例的目的是提供分布式存储数据的传输方法、装置、系统、设备和介质,可以解决数据传输效率低的问题。
为解决上述技术问题,本发明实施例提供一种分布式存储数据的传输方法,包括:
将读写存储缓冲区的内存地址预先注册到网卡;其中,所述读写存储缓冲区具有电容保电特性;
依据控制消息获取源端设备的源端内存地址;
根据所述源端内存地址从所述源端设备拉取数据至自身设备的所述网卡;
依据注册到所述网卡的内存地址以及所述数据的数据量所匹配的存储方式,将所述数据存储至对应的读写存储缓冲区;
基于用户态驱动控制将所述读写存储缓冲区的所述数据下刷至非易失性存储介质。
一方面,所述将读写存储缓冲区的内存地址预先注册到网卡包括:
查询自身主机所管理硬件的内存资源;其中,所述内存资源包括主机内存和至少一个所述读写存储缓冲区;
根据绑核规则,将各所述读写存储缓冲区的内存地址注册到对应的网卡。
一方面,所述根据绑核规则,将各所述读写存储缓冲区的内存地址注册到对应的网卡包括:
查询目标读写存储缓冲区所绑定的目标CPU核;其中,所述目标读写存储缓冲区为所有所述读写存储缓冲区中的任意一个读写存储缓冲区;
将所述目标读写存储缓冲区的内存地址注册到所述目标CPU核绑定的网卡上。
一方面,所述依据控制消息获取源端设备的源端内存地址包括:
接收所述源端设备传输的控制消息;
对所述控制消息进行解析,以获取所述控制消息中携带的所述源端设备的源端内存地址。
一方面,所述根据所述源端内存地址从所述源端设备拉取数据至自身设备的所述网卡包括:
根据所述源端内存地址从所述源端设备的源端网卡中读取所述数据;
将所述数据通过无线带宽网络传输至自身设备的所述网卡。
一方面,在所述根据所述源端内存地址从所述源端设备拉取数据至自身设备的所述网卡之后,还包括:
判断所有所述读写存储缓冲区的可用存储空间是否满足所述数据的存储空间需求;
在所有所述读写存储缓冲区的可用存储空间不满足所述数据的存储空间需求的情况下,将所述数据存储至自身设备的主机内存;
在所有所述读写存储缓冲区的可用存储空间满足所述数据的存储空间需求的情况下,执行所述依据注册到所述网卡的内存地址以及所述数据的数据量所匹配的存储方式,将所述数据存储至对应的读写存储缓冲区的步骤。
一方面,所述将所述数据存储至自身设备的主机内存包括:
利用内核接口将所述数据写入所述主机内存。
一方面,所述读写存储缓冲区包括第一缓存设备和第二缓存设备;单个所述第一缓存设备的容量小于单个所述第二缓存设备的容量;
所述依据注册到所述网卡的内存地址以及所述数据的数据量所匹配的存储方式,将所述数据存储至对应的读写存储缓冲区包括:
判断所述数据的数据量是否大于或等于设定的阈值;
在所述数据的数据量大于或等于所述阈值的情况下,依据注册到所述网卡的内存地址,将所述数据存储至当前进程所匹配的第二缓存设备;
在所述数据的数据量小于所述阈值的情况下,将所述数据存储至所述第一缓存设备。
一方面,所述第二缓存设备的个数为多个;
所述依据注册到所述网卡的内存地址,将所述数据存储至当前进程所匹配的第二缓存设备包括:
根据纠删机制,将所述数据拆分为多个子数据;
依据注册到所述网卡的内存地址,确定出与所述子数据的个数匹配的多个目标第二缓存设备;
将各所述子数据并发写入各自对应的一个目标第二缓存设备。
一方面,所述将各所述子数据并发写入各自对应的一个目标第二缓存设备包括:
通过所述用户态驱动控制将各所述子数据并发写入各自对应的一个目标第二缓存设备。
一方面,所述第一缓存设备的个数为多个;
所述将所述数据存储至所述第一缓存设备包括:
将所述数据存储至第一主缓存设备;
按照设定的副本数量,将所述数据同时存储至与所述副本数量匹配的第一副缓存设备。
一方面,在所述将所述数据存储至所述第一缓存设备之后,还包括:
判断所述第一缓存设备上存储的数据总量是否达到落盘量;
在所述第一缓存设备上存储的数据总量达到落盘量的情况下,基于用户态驱动控制将所述第一缓存设备的所述数据下刷至所述第二缓存设备。
一方面,还包括:
预先在所述第一缓存设备上划分出用于存储符合高频操作要求的数据的缓存空间。
一方面,所述缓存空间包括用于存储元数据日志的元数据缓存空间;所述方法还包括:
在所述数据的数据量小于所述阈值的情况下,将所述数据对应的元数据日志写入所述第一缓存设备的元数据缓存空间。
一方面,在所述将所述数据存储至所述第一缓存设备之后,还包括:
利用位图索引记录所述第一缓存设备上所述数据的存储位置。
一方面,还包括:
调用图像处理器的驱动接口,将所述图像处理器的数据写入所述网卡;
通过无线带宽网络将所述网卡中记录的所述图像处理器的数据传输至远端设备的读写存储缓冲区。
一方面,还包括:
根据数据存储需求的变化,调整所述读写存储缓冲区的容量。
一方面,在所述基于用户态驱动控制将所述读写存储缓冲区的所述数据下刷至非易失性存储介质之后,还包括:
将所述读写存储缓冲区释放至内存资源池。
本发明实施例还提供了一种分布式存储数据的传输装置,包括注册单元、获取单元、拉取单元、存储单元和落盘单元;
所述注册单元,用于将读写存储缓冲区的内存地址预先注册到网卡;其中,所述读写存储缓冲区具有电容保电特性;
所述获取单元,用于依据控制消息获取源端设备的源端内存地址;
所述拉取单元,用于根据所述源端内存地址从所述源端设备拉取数据至自身设备的所述网卡;
所述存储单元,用于依据注册到所述网卡的内存地址以及所述数据的数据量所匹配的存储方式,将所述数据存储至对应的读写存储缓冲区;
所述落盘单元,用于基于用户态驱动控制将所述读写存储缓冲区的所述数据下刷至非易失性存储介质。
一方面,所述注册单元包括查询子单元和绑核子单元;
所述查询子单元,用于查询自身主机所管理硬件的内存资源;其中,所述内存资源包括主机内存和至少一个所述读写存储缓冲区;
所述绑核子单元,用于根据绑核规则,将各所述读写存储缓冲区的内存地址注册到对应的网卡。
一方面,所述绑核子单元用于查询目标读写存储缓冲区所绑定的目标CPU核;其中,所述目标读写存储缓冲区为所有所述读写存储缓冲区中的任意一个读写存储缓冲区;将所述目标读写存储缓冲区的内存地址注册到所述目标CPU核绑定的网卡上。
一方面,所述获取单元用于接收所述源端设备传输的控制消息;对所述控制消息进行解析,以获取所述控制消息中携带的所述源端设备的源端内存地址。
一方面,所述拉取单元包括读取子单元和传输子单元;
所述读取子单元,用于根据所述源端内存地址从所述源端设备的源端网卡中读取所述数据;
所述传输子单元,用于将所述数据通过无线带宽网络传输至自身设备的所述网卡。
一方面,在所述根据所述源端内存地址从所述源端设备拉取数据至自身设备的所述网卡之后,还包括判断单元和主机内存存储单元;
所述判断单元,用于判断所有所述读写存储缓冲区的可用存储空间是否满足所述数据的存储空间需求;
所述主机内存存储单元,用于在所有所述读写存储缓冲区的可用存储空间不满足所述数据的存储空间需求的情况下,将所述数据存储至自身设备的主机内存;
在所有所述读写存储缓冲区的可用存储空间满足所述数据的存储空间需求的情况下,触发所述存储单元执行所述依据注册到所述网卡的内存地址以及所述数据的数据量所匹配的存储方式,将所述数据存储至对应的读写存储缓冲区的步骤。
一方面,所述主机内存存储单元用于利用内核接口将所述数据写入所述主机内存。
一方面,所述读写存储缓冲区包括第一缓存设备和第二缓存设备;单个所述第一缓存设备的容量小于单个所述第二缓存设备的容量;
所述存储单元包括判断子单元、第一缓存子单元和第二缓存子单元;
所述判断子单元,用于判断所述数据的数据量是否大于或等于设定的阈值;
所述第一缓存子单元,用于在所述数据的数据量大于或等于所述阈值的情况下,依据注册到所述网卡的内存地址,将所述数据存储至当前进程所匹配的第二缓存设备;
所述第二缓存子单元,用于在所述数据的数据量小于所述阈值的情况下,将所述数据存储至所述第一缓存设备。
一方面,所述第二缓存设备的个数为多个;
所述第一缓存子单元用于根据纠删机制,将所述数据拆分为多个子数据;依据注册到所述网卡的内存地址,确定出与所述子数据的个数匹配的多个目标第二缓存设备;将各所述子数据并发写入各自对应的一个目标第二缓存设备。
一方面,所述第一缓存子单元用于通过所述用户态驱动控制将各所述子数据并发写入各自对应的一个目标第二缓存设备。
一方面,所述第一缓存设备的个数为多个;
所述第二缓存子单元用于将所述数据存储至第一主缓存设备;按照设定的副本数量,将所述数据同时存储至与所述副本数量匹配的第一副缓存设备。
一方面,还包括数据量判断单元和下刷单元;
所述数据量判断单元,用于判断所述第一缓存设备上存储的数据总量是否达到落盘量;
所述下刷单元,用于在所述第一缓存设备上存储的数据总量达到落盘量的情况下,基于用户态驱动控制将所述第一缓存设备的所述数据下刷至所述第二缓存设备。
一方面,还包括划分单元;
所述划分单元,用于预先在所述第一缓存设备上划分出用于存储符合高频操作要求的数据的缓存空间。
一方面,所述缓存空间包括用于存储元数据日志的元数据缓存空间;所述装置还包括日志缓存单元;
所述日志缓存单元,用于在所述数据的数据量小于所述阈值的情况下,将所述数据对应的元数据日志写入所述第一缓存设备的元数据缓存空间。
一方面,还包括记录单元;
所述记录单元,用于利用位图索引记录所述第一缓存设备上所述数据的存储位置。
一方面,还包括调用单元和传输单元;
所述调用单元,用于调用图像处理器的驱动接口,将所述图像处理器的数据写入所述网卡;
所述传输单元,用于通过无线带宽网络将所述网卡中记录的所述图像处理器的数据传输至远端设备的读写存储缓冲区。
一方面,还包括调整单元;
所述调整单元,用于根据数据存储需求的变化,调整所述读写存储缓冲区的容量。
一方面,在所述基于用户态驱动控制将所述读写存储缓冲区的所述数据下刷至非易失性存储介质之后,还包括释放单元;
所述释放单元,用于将所述读写存储缓冲区释放至内存资源池。
本发明实施例还提供了一种分布式存储数据的传输系统,包括多个设备;各所述设备上均部署有中央处理器、主机内存、网卡、读写存储缓冲区和非易失性存储介质;
各所述中央处理器,用于将其管控的读写存储缓冲区的内存地址预先注册到对应的网卡;其中,各所述读写存储缓冲区具有电容保电特性;
第一设备的第一中央处理器,用于向第二设备的第二中央处理器发送控制消息;其中,所述控制消息中携带有第一网卡的第一内存地址;
所述第二中央处理器,用于依据所述控制消息获取所述第一内存地址;将所述第一内存地址传输至第二网卡;
所述第二网卡,用于根据所述第一内存地址从所述第一网卡拉取数据至自身网卡;依据注册到自身网卡的内存地址以及所述数据的数据量所匹配的存储方式,将所述数据存储至对应的第二读写存储缓冲区;
所述第二读写存储缓冲区,用于基于用户态驱动控制将所述读写存储缓冲区的所述数据下刷至非易失性存储介质。
本发明实施例还提供了一种分布式存储数据的传输设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序以实现如上述分布式存储数据的传输方法的步骤。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述分布式存储数据的传输方法的步骤。
由上述技术方案可以看出,将读写存储缓冲区的内存地址预先注册到网卡;其中,读写存储缓冲区具有电容保电特性。依据控制消息获取源端设备的源端内存地址;根据源端内存地址从源端设备拉取数据至自身设备的网卡。依据注册到网卡的内存地址以及数据的数据量所匹配的存储方式,将数据存储至对应的读写存储缓冲区;基于用户态驱动控制将读写存储缓冲区的数据下刷至非易失性存储介质。本发明的有益效果在于,由于网卡中预先注册了读写存储缓冲区的内存地址,因此网卡在获取到数据后,可以直接将数据存储至读写存储缓冲区,整个实现过程减少了中央处理器和主机内存的参与,减少了主机内存拷贝带来的时延,提升了数据传输效率。并且读写存储缓冲区具有电容保电特性,因此在将数据存储至读写存储缓冲区后,网卡可以直接返回执行后续操作,无需等待数据的落盘,提升了系统的OPS性能。
附图说明
为了更清楚地说明本发明实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种分布式存储数据的传输方法的流程图;
图2为本发明实施例提供的一种读写存储缓冲区的分布示意图;
图3为本发明实施例提供的一种数据存储至对应的读写存储缓冲区的方法的流程图;
图4为本发明实施例提供的一种数据分流的示意图;
图5为本发明实施例提供的一种分布式存储数据的传输装置;
图6为本发明实施例提供的一种分布式存储数据的传输系统的结构示意图;
图7为本发明实施例提供的一种分布式存储数据的传输设备的结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本发明保护范围。
本发明的说明书及上述附图中的术语“包括”和“具有”,以及与“包括”和“具有”相关的任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可包括没有列出的步骤或单元。
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。
接下来,详细介绍本发明实施例所提供的一种分布式存储数据的传输方法。图1为本发明实施例提供的一种分布式存储数据的传输方法的流程图,该方法包括:
S101:将读写存储缓冲区的内存地址预先注册到网卡。
在本发明实施例中,具有电容保电特性的读写存储缓冲区可以为固态硬盘(SolidState Drives,SSD)控制器内部的读写存储缓冲区(Controller Memory Buffer,CMB)。相比于主机内存(Host Memory Buffer,HMB),CMB和HMB使用队列的方式都是一样的。但是CMB所使用的内存地址位于控制器自己的内存中。
传统方式中,数据跨节点发送数据时,源端节点会将数据传输至对端节点的网卡。对端节点的网卡会将数据存储至主机内存,经由CPU的处理从而将主机内存的数据下刷到非易失性存储介质。主机内存和CPU的介入会导致数据传输过程产生较高的时延,使得数据传输效率偏低。
在本发明实施例中,为了降低数据传输过程中主机内存拷贝所产生的时延,可以将读写存储缓冲区的内存地址预先注册到网卡,从而使得数据的传输过程基本上绕过主机内存和中央处理器(Central Processing Unit,CPU)。
CMB由盘内电容保电,可供上层应用使用。CMB支持远程直接数据存取(RemoteDirect Memory Access,RDMA)的网卡,因此网卡可以采用RDMA网卡。
在实际应用中,当前设备可以查询自身主机所管理硬件的内存资源;根据绑核规则,将各读写存储缓冲区的内存地址注册到对应的网卡。其中,内存资源可以包括主机内存和至少一个读写存储缓冲区。
考虑到实际应用中,一个设备往往包含多个CPU核,每个CPU核有其对应的网卡和读写存储缓冲区。如果将一个读写存储缓冲区的内存地址注册到其它CPU核的网卡上,会影响数据传输效率。因此在本发明实施例中,绑核规则可以包括将读写存储缓冲区的内存地址注册在与其属于同一个CPU核下的网卡。
以所有读写存储缓冲区中的任意一个读写存储缓冲区即目标读写存储缓冲区为例,在具体实现中,可以查询目标读写存储缓冲区所绑定的目标CPU核;将目标读写存储缓冲区的内存地址注册到目标CPU核绑定的网卡上。
举例说明,假设当前设备包含3个CPU核,分别为CPU1、CPU2和CPU3,每个CPU核下绑定了一个网卡和一个读写存储缓冲区,如CPU1绑定网卡1和读写存储缓冲区1、CPU2绑定网卡2和读写存储缓冲区2、CPU3绑定网卡3和读写存储缓冲区3。在向网卡中注册读写存储缓冲区的内存地址时,按照绑核规则,应该将读写存储缓冲区1的内存地址注册到网卡1、将读写存储缓冲区2的内存地址注册到网卡2、将读写存储缓冲区3的内存地址注册到网卡3。
S102:依据控制消息获取源端设备的源端内存地址。
两个设备之间要实现数据的交互传输,每个设备都需要获知对端设备的内存地址。
在实际应用中,可以通过传输控制消息的方式获取内存地址。为了便于描述,可以将发送数据的设备称作源端设备,将接收数据的设备称作目的设备。源端设备可以向目的设备传输控制消息,控制消息中可以携带源端内存地址。目的设备在接收到源端设备传输的控制消息后,对控制消息进行解析,可以获取到控制消息中携带的源端设备的源端内存地址。
S103:根据源端内存地址从源端设备拉取数据至自身设备的网卡。
在本发明实施例中,目的设备可以采用拉取(pull)的方式获取源端设备的数据。即目的设备可以根据源端内存地址从源端设备的源端网卡中读取数据;依赖于无线带宽(InfiniBand,IB)网络将数据传输至自身设备的网卡。
S104:依据注册到网卡的内存地址以及数据的数据量所匹配的存储方式,将数据存储至对应的读写存储缓冲区。
网卡在获取到数据后,可以依据注册到网卡的内存地址,将数据直接存储至对应的读写存储缓冲区,该过程跳过了主机内存的存储,从而降低了时延。
考虑到实际应用中,网卡向读写存储缓冲区单次传输数据的数据量可能并不高。每向读写存储缓冲区写入一次数据,则需要将该数据执行下刷操作。如果网卡多次向读写存储缓冲区写入数据量较少的数据,则需要频繁的执行下刷操作。
为了提升数据的处理性能,可以根据数据量的大小划分不同的存储方式,对于数据量较小的数据可以先执行缓存,等数据量累积到较大的情况下,再将累积的数据写入到缓冲区。对于数据量较大的数据可以直接写入缓冲区,对该数据执行下刷操作。在实际应用中,可以基于阈值对数据量大小进行评估,具体方式可以参见图3的介绍,在此不再赘述。
在本发明实施例中,针对于数据的不同存储方式,可以将读写存储缓冲区划分为缓存聚合层和存储池层;其中,缓存聚合层可以用于缓存小数据量的数据,存储池层可以用于存储大数据量的数据。缓存聚合层的数据量累积到较大的情况下,可以将缓存聚合层的数据传输到存储池层,存储池层的数据可以直接执行下刷操作。
S105:基于用户态驱动控制将读写存储缓冲区的数据下刷至非易失性存储介质。
在实际应用中,可以通过用户态驱动控制下发指令的方式,将读写存储缓冲区的数据下刷至非易失性存储介质。在基于用户态驱动控制将读写存储缓冲区的数据下刷至非易失性存储介质之后,可以将读写存储缓冲区释放至内存资源池。非易失性存储介质可以采用基于开源大数据平台改造而成的列式存储介质(NANA)。
例如,上层服务DSD可以采用异步方式调用用户态驱动程序控制读写存储缓冲区中数据落入NANA,并释放内存空间。
在本发明实施例中,可以根据数据存储需求的变化,调整读写存储缓冲区的容量。
由上述技术方案可以看出,将读写存储缓冲区的内存地址预先注册到网卡;其中,读写存储缓冲区具有电容保电特性。依据控制消息获取源端设备的源端内存地址;根据源端内存地址从源端设备拉取数据至自身设备的网卡。依据注册到网卡的内存地址以及数据的数据量所匹配的存储方式,将数据存储至对应的读写存储缓冲区;基于用户态驱动控制将读写存储缓冲区的数据下刷至非易失性存储介质。本发明的有益效果在于,由于网卡中预先注册了读写存储缓冲区的内存地址,因此网卡在获取到数据后,可以直接将数据存储至读写存储缓冲区,整个实现过程减少了中央处理器和主机内存的参与,减少了主机内存拷贝带来的时延,提升了数据传输效率。并且读写存储缓冲区具有电容保电特性,因此在将数据存储至读写存储缓冲区后,网卡可以直接返回执行后续操作,无需等待数据的落盘,提升了系统的OPS性能。
考虑到实际应用中,可能会出现读写存储缓冲区的内存不足的情况,因此在根据源端内存地址从源端设备拉取数据至自身设备的网卡之后,可以判断所有读写存储缓冲区的可用存储空间是否满足数据的存储空间需求。
在所有读写存储缓冲区的可用存储空间不满足数据的存储空间需求的情况下,说明此时读写存储缓冲区的内存不足,为了保证数据的顺利存储,可以将数据存储至自身设备的主机内存。其中,主机内存可以采用动态随机存取内存(Dynamic Random AccessMemory,DRAM)。
在实际应用中,可以利用内核接口将数据写入主机内存。
在所有读写存储缓冲区的可用存储空间满足数据的存储空间需求的情况下,说明此时读写存储缓冲区的内存充足,可以直接依据注册到网卡的内存地址以及数据的数据量所匹配的存储方式,将数据存储至对应的读写存储缓冲区。
在本发明实施例中,可以封装写入接口,对上层应用透明,自动识别缓存特征,确定数据走主机内存还是CMB内存。主机内存采用内核写入,CMB内存采用用户态写入。在读写存储缓冲区的可用存储空间充足时,将数据直接存储至读写存储缓冲区。在读写存储缓冲区的可用存储空间不足时,将数据存储至主机内存。保证了数据的顺利存储。
针对于数据的不同存储方式,可以将读写存储缓冲区划分为缓存聚合层和存储池层。缓存聚合层和存储池层均可以包含多个块设备,为了便于区分,可以将缓存聚合层包含的块设备称作第一缓存设备,将存储池层包含的块设备称作第二缓存设备。单个第一缓存设备的容量小于单个第二缓存设备的容量。对于一个设备而言,其上部署的第一缓存设备和第二缓存设备的个数可以为多个。
图2为本发明实施例提供的一种读写存储缓冲区的分布示意图,图2中是以N个设备为例,分别为设备1至设备N,每个设备包含两个第一缓存设备和多个第二缓存设备。在实际应用中,可以根据数据传输需求的变化,动态调整第一缓存设备和第二缓存设备的个数。读写存储缓冲区可以划分为缓存聚合层和存储池层,缓存聚合层包含多个第一缓存设备,存储池层包含多个第二缓存设备。对于数据量小的数据可以先存储至第一缓存设备,对于数据量大的数据可以直接存储至第二缓存设备。
第一缓存设备可以采用非易失性随机访问存储器(Non-Volatile Random AccessMemory,NVRAM),第二缓存设备可以采用非易失性内存主机控制器接口规范(Non-VolatileMemory Express,NVME)介质。第一缓存设备可以实现全局缓存。
在本发明实施例中,利用CMB内存保电特性,设计专有的NVRAM硬件,可以进一步增大内存,增大电容容量。基于该特定硬件设计全局缓存,数据写入NVRAM后可以直接返回,降低小块数据传输时延。在全局缓存内的数据可做聚合和持久化,具体操作可以根据上层业务需求自行操作,全局缓存提供高OPS和低时延服务。
图3为本发明实施例提供的一种数据存储至对应的读写存储缓冲区的方法的流程图,该方法包括:
S301:判断数据的数据量是否大于或等于设定的阈值。
在数据的数据量大于或等于阈值的情况下,可以执行S302。在数据的数据量小于阈值的情况下,可以执行S303。
S302:依据注册到网卡的内存地址,将数据存储至当前进程所匹配的第二缓存设备。
在数据的数据量大于或等于阈值的情况下,说明可以将数据直接写入存储池层。
存储池层包含的第二缓存设备的个数可以为多个。对于大数据量的数据,为了减少冗余数据传输,可以采用纠删数控分离的操作流程。
在本发明实施例中,可以根据纠删机制,将数据拆分为多个子数据;依据注册到网卡的内存地址,确定出与子数据的个数匹配的多个目标第二缓存设备;将各子数据并发写入各自对应的一个目标第二缓存设备。
在实际应用中,可以通过用户态驱动控制将各子数据并发写入各自对应的一个目标第二缓存设备。由于第二缓存设备具有保电特性,因此在写入数据后,无需等待数据的下刷可以直接返回,以实现对后续数据的处理。
举例说明,根据纠删机制将数据拆分为3份,分别为子数据1、子数据2和子数据3,网卡可以选取三个第二缓存设备,分别为第二缓存设备1、第二缓存设备2和第二缓存设备3。网卡可以将子数据1存储至第二缓存设备1,将子数据2存储至第二缓存设备2,将子数据3存储至第二缓存设备3。
S303:将数据存储至第一缓存设备。
在数据的数据量小于阈值的情况下,可以将数据直接写入缓存聚合层。缓存聚合层包含的第一缓存设备的个数可以为多个。
对于小数据量的数据,为了减少交互次数,可以采用副本主转发的操作流程。网卡可以将数据存储至第一主缓存设备;按照设定的副本数量,将数据同时存储至与副本数量匹配的第一副缓存设备。
举例说明,假设副本数量为2,网卡可以选取三个第一缓存设备分别存储数据,分别为第一缓存设备1、第一缓存设备2和第一缓存设备3,以第一缓存设备1作为第一主缓存设备,第一缓存设备2和第一缓存设备3作为第一副缓存设备为例,网卡可以将数据存储至第一缓存设备1;第一缓存设备1可以将数据同时存储至第一缓存设备2和第一缓存设备3。
在具体实现中,在将数据存储至第一缓存设备之后,可以判断第一缓存设备上存储的数据总量是否达到落盘量;在第一缓存设备上存储的数据总量达到落盘量的情况下,可以基于用户态驱动控制将第一缓存设备的数据下刷至第二缓存设备。
落盘量可以基于文件条带大小设置,例如可配置为4MB或者8MB等。
图4为本发明实施例提供的一种数据分流的示意图,为了便于描述,可以将数据量小于阈值的第一数据称作小块IO,数据量大于或等于阈值的第二数据称作大块IO。对于大块IO,客户端可以直接将其存储至存储池层。对于小块IO,客户端可以先将其缓存至缓存聚合层,当累积的数据量足够多的时候,可以将累积的数据聚合后下刷至存储池层。
图4中小块IO从缓存聚合层向存储池层下刷过程,小块IO写入缓存聚合层后,给客户端快速返回,当缓存聚合层中数据按照存储池粒度满足整条带后,可以进行聚合并下刷,同时将业务数据和内部聚合数据的正向和反向映射关系持久化。无论是小块IO还是大块IO,客户端将其写入读写存储缓冲区后可以直接返回,无需等待数据下刷至非易失性存储介质,降低数据传输时延。
小块IO另一个关键性能瓶颈点是元数据,在小块IO场景下,元数据的时延直接决定了小块IO的性能,缓存聚合层包含的NVRAM作为一个缓存层,可以为任何写入提供较低的持久化时延,因此在本发明实施例中,可以预先在第一缓存设备上划分出用于存储符合高频操作要求的数据的缓存空间。
对于元数据日志的存储,缓存空间可以包括用于存储元数据日志的元数据缓存空间。在数据的数据量小于阈值的情况下,可以将数据对应的元数据日志写入第一缓存设备的元数据缓存空间。
元数据服务的任何操作都会产生日志写入,通过在NVRAM中开辟小块空间用于元数据的日志写入,然后异步刷新至元数据池,提高了小块IO性能。
在本发明实施例中,可以在NVRAM中开辟独立空间用于协议层的任何高频低时延持久化需求。对于对象和块也存在这种与协议元数据相关的高频低时延操作,可以参照元数据的方式开辟独立空间,提供低时延IO服务。
在实际应用中,为了清楚的了解第一缓存设备的使用情况,可以利用位图索引记录第一缓存设备上数据的存储位置。
例如,位图索引中可以采用“1”表示当前区域存储了数据,“0”表示当前区域未存储数据。基于位图索引,可以清楚的获知第一缓存设备中的可用存储空间。
在AI计算场景,整个优化体系架构可以将图像处理器(Graphics ProcessingUnit,GPU)纳入进来,上层应用可以直接调用图像处理器的驱动接口,将图像处理器的数据写入网卡;通过无线带宽网络将网卡中记录的图像处理器的数据传输至远端设备的读写存储缓冲区。
上层应用直接通过GPU驱动接口进行数据IO,RDMA网卡直接将GPU内存中的数据发送至远端设备的读写存储缓冲区,这样数据基本在硬件层面来回流转,基本上绕过了主机内存和CPU,CPU和主机内存只承担少量的逻辑复杂的控制消息。
图5为本发明实施例提供的一种分布式存储数据的传输装置,包括注册单元51、获取单元52、拉取单元53、存储单元54和落盘单元55;
注册单元51,用于将读写存储缓冲区的内存地址预先注册到网卡;其中,读写存储缓冲区具有电容保电特性;
获取单元52,用于依据控制消息获取源端设备的源端内存地址;
拉取单元53,用于根据源端内存地址从源端设备拉取数据至自身设备的网卡;
存储单元54,用于依据注册到网卡的内存地址以及数据的数据量所匹配的存储方式,将数据存储至对应的读写存储缓冲区;
落盘单元55,用于基于用户态驱动控制将读写存储缓冲区的数据下刷至非易失性存储介质。
在一些实施例中,注册单元包括查询子单元和绑核子单元;
查询子单元,用于查询自身主机所管理硬件的内存资源;其中,内存资源包括主机内存和至少一个读写存储缓冲区;
绑核子单元,用于根据绑核规则,将各读写存储缓冲区的内存地址注册到对应的网卡。
在一些实施例中,绑核子单元用于查询目标读写存储缓冲区所绑定的目标CPU核;其中,目标读写存储缓冲区为所有读写存储缓冲区中的任意一个读写存储缓冲区;将目标读写存储缓冲区的内存地址注册到目标CPU核绑定的网卡上。
在一些实施例中,获取单元用于接收源端设备传输的控制消息;对控制消息进行解析,以获取控制消息中携带的源端设备的源端内存地址。
在一些实施例中,拉取单元包括读取子单元和传输子单元;
读取子单元,用于根据源端内存地址从源端设备的源端网卡中读取数据;
传输子单元,用于将数据通过无线带宽网络传输至自身设备的网卡。
在一些实施例中,在根据源端内存地址从源端设备拉取数据至自身设备的网卡之后,还包括判断单元和主机内存存储单元;
判断单元,用于判断所有读写存储缓冲区的可用存储空间是否满足数据的存储空间需求;
主机内存存储单元,用于在所有读写存储缓冲区的可用存储空间不满足数据的存储空间需求的情况下,将数据存储至自身设备的主机内存;
在所有读写存储缓冲区的可用存储空间满足数据的存储空间需求的情况下,触发存储单元执行依据注册到网卡的内存地址以及数据的数据量所匹配的存储方式,将数据存储至对应的读写存储缓冲区的步骤。
在一些实施例中,主机内存存储单元用于利用内核接口将数据写入主机内存。
在一些实施例中,读写存储缓冲区包括第一缓存设备和第二缓存设备;单个第一缓存设备的容量小于单个第二缓存设备的容量;
存储单元包括判断子单元、第一缓存子单元和第二缓存子单元;
判断子单元,用于判断数据的数据量是否大于或等于设定的阈值;
第一缓存子单元,用于在数据的数据量大于或等于阈值的情况下,依据注册到网卡的内存地址,将数据存储至当前进程所匹配的第二缓存设备;
第二缓存子单元,用于在数据的数据量小于阈值的情况下,将数据存储至第一缓存设备。
在一些实施例中,第二缓存设备的个数为多个;
第一缓存子单元用于根据纠删机制,将数据拆分为多个子数据;依据注册到网卡的内存地址,确定出与子数据的个数匹配的多个目标第二缓存设备;将各子数据并发写入各自对应的一个目标第二缓存设备。
在一些实施例中,第一缓存子单元用于通过用户态驱动控制将各子数据并发写入各自对应的一个目标第二缓存设备。
在一些实施例中,第一缓存设备的个数为多个;
第二缓存子单元用于将数据存储至第一主缓存设备;按照设定的副本数量,将数据同时存储至与副本数量匹配的第一副缓存设备。
在一些实施例中,还包括数据量判断单元和下刷单元;
数据量判断单元,用于判断第一缓存设备上存储的数据总量是否达到落盘量;
下刷单元,用于在第一缓存设备上存储的数据总量达到落盘量的情况下,基于用户态驱动控制将第一缓存设备的数据下刷至第二缓存设备。
在一些实施例中,还包括划分单元;
划分单元,用于预先在第一缓存设备上划分出用于存储符合高频操作要求的数据的缓存空间。
在一些实施例中,缓存空间包括用于存储元数据日志的元数据缓存空间;装置还包括日志缓存单元;
日志缓存单元,用于在数据的数据量小于阈值的情况下,将数据对应的元数据日志写入第一缓存设备的元数据缓存空间。
在一些实施例中,还包括记录单元;
记录单元,用于利用位图索引记录第一缓存设备上数据的存储位置。
在一些实施例中,还包括调用单元和传输单元;
调用单元,用于调用图像处理器的驱动接口,将图像处理器的数据写入网卡;
传输单元,用于通过无线带宽网络将网卡中记录的图像处理器的数据传输至远端设备的读写存储缓冲区。
在一些实施例中,还包括调整单元;
调整单元,用于根据数据存储需求的变化,调整读写存储缓冲区的容量。
在一些实施例中,在基于用户态驱动控制将读写存储缓冲区的数据下刷至非易失性存储介质之后,还包括释放单元;
释放单元,用于将读写存储缓冲区释放至内存资源池。
图5所对应实施例中特征的说明可以参见图1所对应实施例的相关说明,这里不再一一赘述。
由上述技术方案可以看出,将读写存储缓冲区的内存地址预先注册到网卡;其中,读写存储缓冲区具有电容保电特性。依据控制消息获取源端设备的源端内存地址;根据源端内存地址从源端设备拉取数据至自身设备的网卡。依据注册到网卡的内存地址以及数据的数据量所匹配的存储方式,将数据存储至对应的读写存储缓冲区;基于用户态驱动控制将读写存储缓冲区的数据下刷至非易失性存储介质。本发明的有益效果在于,由于网卡中预先注册了读写存储缓冲区的内存地址,因此网卡在获取到数据后,可以直接将数据存储至读写存储缓冲区,整个实现过程减少了中央处理器和主机内存的参与,减少了主机内存拷贝带来的时延,提升了数据传输效率。并且读写存储缓冲区具有电容保电特性,因此在将数据存储至读写存储缓冲区后,网卡可以直接返回执行后续操作,无需等待数据的落盘,提升了系统的OPS性能。
图6为本发明实施例提供的一种分布式存储数据的传输系统的结构示意图,包括多个设备;各设备上均部署有中央处理器61、主机内存62、网卡63、读写存储缓冲区64和非易失性存储介质65;
各中央处理器61,用于将其管控的读写存储缓冲区64的内存地址预先注册到对应的网卡63;其中,各读写存储缓冲区具有电容保电特性;
第一设备的第一中央处理器61,用于向第二设备的第二中央处理器61发送控制消息;其中,控制消息中携带有第一网卡63的第一网卡63地址;
第二中央处理器61,用于依据控制消息获取第一网卡63地址;将第一网卡63地址传输至第二网卡63;
第二网卡63,用于根据第一网卡63地址从第一网卡63拉取数据至自身网卡63;依据注册到自身网卡63的内存地址以及数据的数据量所匹配的存储方式,将数据存储至对应的第二读写存储缓冲区64;
第二读写存储缓冲区64,用于基于用户态驱动控制将读写存储缓冲区的数据下刷至非易失性存储介质65。
图6所对应实施例中特征的说明可以参见图1所对应实施例的相关说明,这里不再一一赘述。
各设备之间的数据传输过程类似,图6中是以第一设备和第二设备这两个设备为例进行的介绍。以第一设备的主机内存62上的数据存储至第二设备的读写存储缓冲区64为例,图6中带箭头的线段表示了数据的传输方向。
主机内存62可以采用DRAM,DRAM和CPU之间可以通过双倍数据传输(Double DataRate,DDR)协议进行通信。
考虑到CMB具有保电特性,因此读写存储缓冲区64可以采用CMB。为了便于描述,可以将读写存储缓冲区64称作CMB内存。CMB支持RDMA网卡,因此网卡63可以采用RDMA网卡。RDMA网卡之间可以通过无线带宽网络实现数据的传输。
CMB设备主要是指包含CMB内存芯片的设备,例如:NVME盘,GPU等。进程初始化查询所管理硬件的内存资源,可以将CMB内存的内存地址注册到RDMA网卡。
如果有多张网卡,需要根据绑核规则选择合适的网卡注册。当CMB内存使用完成后,由内存管理模块分配主机内存。针对分配的内存对于上层业务操作透明,由具体的管理工具(buffer)识别,使用完成后归还到内存管理模块的内存池。
RDMA本身支持发送(send),写(write),读(read)原语,根据效率考虑,大块IO可以走read/write 单边原语,小块IO可以走send原语。
对于大块IO的传输,各个服务申请CMB内存,通过RDMA通信可以将数据直接拉至盘的CMB内存,通过用户态驱动控制将CMB内存数据写入到对应逻辑区块地址(Logical BlockAddress,LBA)上,完成之后释放到内存资源池。
对于小块IO的传输,通过RDMA网卡双边原语send,将数据发送至缓存聚合层的NVRAM,缓存聚合层冗余可以采用三副本,可按照存储池划分区域,鉴于NVRAM空间大小限制(单节点配置32GB),单个存储池内的数据可以多路并发写入,满足文件条带大小后,下刷至存储池层。
小块IO先进全局缓存,直接走send接口,走副本主转发流程,可以减少交互次数。大块IO直接落存储池层,走纠删数控分离流程,可以减少冗余数据传输。
在本发明实施例中,RMDA网卡可以直接访问CMB内存,可以绕开主机内存读写负载的干扰。通过第三代IO总线(Peripheral Component Interconnect Express,PCIE)通道访问部件内存的时延,和通过双列直插式存储模块(Dual-Inline-Memory-Modules,DIMM)插槽访问主机内存的时延差异相对于软件逻辑来低的多,可以忽略不计。本发明借助CMB内存将数据传输进一步卸载,减少主机内存拷贝,减少主机内存拷贝带来的影响,减少CPU介入,降低存储配置,提高了产品性能,实现了降本增效。
图7为本发明实施例提供的一种分布式存储数据的传输设备的结构图,如图7所示,分布式存储数据的传输设备包括:存储器70,用于存储计算机程序;
处理器71,用于执行计算机程序时实现如上述实施例分布式存储数据的传输方法的步骤。
本实施例提供的分布式存储数据的传输设备可以包括但不限于智能手机、平板电脑、笔记本电脑或台式电脑等。
其中,处理器71可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器71可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器71也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器71可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器71还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器70可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器70还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器70至少用于存储以下计算机程序701,其中,该计算机程序被处理器71加载并执行之后,能够实现前述任一实施例公开的分布式存储数据的传输方法的相关步骤。另外,存储器70所存储的资源还可以包括操作系统702和数据703等,存储方式可以是短暂存储或者永久存储。其中,操作系统702可以包括Windows、Unix、Linux等。数据703可以包括但不限于读写存储缓冲区的内存地址、源端内存地址等。
在一些实施例中,分布式存储数据的传输设备还可包括有显示屏72、输入输出接口73、通信接口74、电源75以及通信总线76。
本领域技术人员可以理解,图7中示出的结构并不构成对分布式存储数据的传输设备的限定,可以包括比图示更多或更少的组件。
可以理解的是,如果上述实施例中的分布式存储数据的传输方法以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对目前技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、磁碟或者光盘等各种可以存储程序代码的介质。
基于此,本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述分布式存储数据的传输方法的步骤。
以上对本发明实施例所提供的分布式存储数据的传输方法、装置、系统、设备和介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
以上对本发明所提供的分布式存储数据的传输方法、装置、系统、设备和介质进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

Claims (22)

1.一种分布式存储数据的传输方法,其特征在于,包括:
将读写存储缓冲区的内存地址预先注册到网卡;其中,所述读写存储缓冲区具有电容保电特性;
依据控制消息获取源端设备的源端内存地址;
根据所述源端内存地址从所述源端设备拉取数据至自身设备的所述网卡;
依据注册到所述网卡的内存地址以及所述数据的数据量所匹配的存储方式,将所述数据存储至对应的读写存储缓冲区;
基于用户态驱动控制将所述读写存储缓冲区的所述数据下刷至非易失性存储介质。
2.根据权利要求1所述的分布式存储数据的传输方法,其特征在于,所述将读写存储缓冲区的内存地址预先注册到网卡包括:
查询自身主机所管理硬件的内存资源;其中,所述内存资源包括主机内存和至少一个所述读写存储缓冲区;
根据绑核规则,将各所述读写存储缓冲区的内存地址注册到对应的网卡。
3.根据权利要求2所述的分布式存储数据的传输方法,其特征在于,所述根据绑核规则,将各所述读写存储缓冲区的内存地址注册到对应的网卡包括:
查询目标读写存储缓冲区所绑定的目标CPU核;其中,所述目标读写存储缓冲区为所有所述读写存储缓冲区中的任意一个读写存储缓冲区;
将所述目标读写存储缓冲区的内存地址注册到所述目标CPU核绑定的网卡上。
4.根据权利要求1所述的分布式存储数据的传输方法,其特征在于,所述依据控制消息获取源端设备的源端内存地址包括:
接收所述源端设备传输的控制消息;
对所述控制消息进行解析,以获取所述控制消息中携带的所述源端设备的源端内存地址。
5.根据权利要求1所述的分布式存储数据的传输方法,其特征在于,所述根据所述源端内存地址从所述源端设备拉取数据至自身设备的所述网卡包括:
根据所述源端内存地址从所述源端设备的源端网卡中读取所述数据;
将所述数据通过无线带宽网络传输至自身设备的所述网卡。
6.根据权利要求1所述的分布式存储数据的传输方法,其特征在于,在所述根据所述源端内存地址从所述源端设备拉取数据至自身设备的所述网卡之后,还包括:
判断所有所述读写存储缓冲区的可用存储空间是否满足所述数据的存储空间需求;
在所有所述读写存储缓冲区的可用存储空间不满足所述数据的存储空间需求的情况下,将所述数据存储至自身设备的主机内存;
在所有所述读写存储缓冲区的可用存储空间满足所述数据的存储空间需求的情况下,执行所述依据注册到所述网卡的内存地址以及所述数据的数据量所匹配的存储方式,将所述数据存储至对应的读写存储缓冲区的步骤。
7.根据权利要求6所述的分布式存储数据的传输方法,其特征在于,所述将所述数据存储至自身设备的主机内存包括:
利用内核接口将所述数据写入所述主机内存。
8.根据权利要求1至7任意一项所述的分布式存储数据的传输方法,其特征在于,所述读写存储缓冲区包括第一缓存设备和第二缓存设备;单个所述第一缓存设备的容量小于单个所述第二缓存设备的容量;
所述依据注册到所述网卡的内存地址以及所述数据的数据量所匹配的存储方式,将所述数据存储至对应的读写存储缓冲区包括:
判断所述数据的数据量是否大于或等于设定的阈值;
在所述数据的数据量大于或等于所述阈值的情况下,依据注册到所述网卡的内存地址,将所述数据存储至当前进程所匹配的第二缓存设备;
在所述数据的数据量小于所述阈值的情况下,将所述数据存储至所述第一缓存设备。
9.根据权利要求8所述的分布式存储数据的传输方法,其特征在于,所述第二缓存设备的个数为多个;
所述依据注册到所述网卡的内存地址,将所述数据存储至当前进程所匹配的第二缓存设备包括:
根据纠删机制,将所述数据拆分为多个子数据;
依据注册到所述网卡的内存地址,确定出与所述子数据的个数匹配的多个目标第二缓存设备;
将各所述子数据并发写入各自对应的一个目标第二缓存设备。
10.根据权利要求9所述的分布式存储数据的传输方法,其特征在于,所述将各所述子数据并发写入各自对应的一个目标第二缓存设备包括:
通过所述用户态驱动控制将各所述子数据并发写入各自对应的一个目标第二缓存设备。
11.根据权利要求8所述的分布式存储数据的传输方法,其特征在于,所述第一缓存设备的个数为多个;
所述将所述数据存储至所述第一缓存设备包括:
将所述数据存储至第一主缓存设备;
按照设定的副本数量,将所述数据同时存储至与所述副本数量匹配的第一副缓存设备。
12.根据权利要求8所述的分布式存储数据的传输方法,其特征在于,在所述将所述数据存储至所述第一缓存设备之后,还包括:
判断所述第一缓存设备上存储的数据总量是否达到落盘量;
在所述第一缓存设备上存储的数据总量达到落盘量的情况下,基于用户态驱动控制将所述第一缓存设备的所述数据下刷至所述第二缓存设备。
13.根据权利要求8所述的分布式存储数据的传输方法,其特征在于,还包括:
预先在所述第一缓存设备上划分出用于存储符合高频操作要求的数据的缓存空间。
14.根据权利要求13所述的分布式存储数据的传输方法,其特征在于,所述缓存空间包括用于存储元数据日志的元数据缓存空间;所述方法还包括:
在所述数据的数据量小于所述阈值的情况下,将所述数据对应的元数据日志写入所述第一缓存设备的元数据缓存空间。
15.根据权利要求8所述的分布式存储数据的传输方法,其特征在于,在所述将所述数据存储至所述第一缓存设备之后,还包括:
利用位图索引记录所述第一缓存设备上所述数据的存储位置。
16.根据权利要求1所述的分布式存储数据的传输方法,其特征在于,还包括:
调用图像处理器的驱动接口,将所述图像处理器的数据写入所述网卡;
通过无线带宽网络将所述网卡中记录的所述图像处理器的数据传输至远端设备的读写存储缓冲区。
17.根据权利要求1所述的分布式存储数据的传输方法,其特征在于,还包括:
根据数据存储需求的变化,调整所述读写存储缓冲区的容量。
18.根据权利要求1所述的分布式存储数据的传输方法,其特征在于,在所述基于用户态驱动控制将所述读写存储缓冲区的所述数据下刷至非易失性存储介质之后,还包括:
将所述读写存储缓冲区释放至内存资源池。
19.一种分布式存储数据的传输装置,其特征在于,包括注册单元、获取单元、拉取单元、存储单元和落盘单元;
所述注册单元,用于将读写存储缓冲区的内存地址预先注册到网卡;其中,所述读写存储缓冲区具有电容保电特性;
所述获取单元,用于依据控制消息获取源端设备的源端内存地址;
所述拉取单元,用于根据所述源端内存地址从所述源端设备拉取数据至自身设备的所述网卡;
所述存储单元,用于依据注册到所述网卡的内存地址以及所述数据的数据量所匹配的存储方式,将所述数据存储至对应的读写存储缓冲区;
所述落盘单元,用于基于用户态驱动控制将所述读写存储缓冲区的所述数据下刷至非易失性存储介质。
20.一种分布式存储数据的传输系统,其特征在于,包括多个设备;各所述设备上均部署有中央处理器、主机内存、网卡、读写存储缓冲区和非易失性存储介质;
各所述中央处理器,用于将其管控的读写存储缓冲区的内存地址预先注册到对应的网卡;其中,各所述读写存储缓冲区具有电容保电特性;
第一设备的第一中央处理器,用于向第二设备的第二中央处理器发送控制消息;其中,所述控制消息中携带有第一网卡的第一内存地址;
所述第二中央处理器,用于依据所述控制消息获取所述第一内存地址;将所述第一内存地址传输至第二网卡;
所述第二网卡,用于根据所述第一内存地址从所述第一网卡拉取数据至自身网卡;依据注册到自身网卡的内存地址以及所述数据的数据量所匹配的存储方式,将所述数据存储至对应的第二读写存储缓冲区;
所述第二读写存储缓冲区,用于基于用户态驱动控制将所述读写存储缓冲区的所述数据下刷至非易失性存储介质。
21.一种分布式存储数据的传输设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序以实现如权利要求1至18任意一项所述分布式存储数据的传输方法的步骤。
22.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至18任意一项所述分布式存储数据的传输方法的步骤。
CN202410065117.1A 2024-01-17 2024-01-17 分布式存储数据的传输方法、装置、系统、设备和介质 Pending CN117573043A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410065117.1A CN117573043A (zh) 2024-01-17 2024-01-17 分布式存储数据的传输方法、装置、系统、设备和介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410065117.1A CN117573043A (zh) 2024-01-17 2024-01-17 分布式存储数据的传输方法、装置、系统、设备和介质

Publications (1)

Publication Number Publication Date
CN117573043A true CN117573043A (zh) 2024-02-20

Family

ID=89892255

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410065117.1A Pending CN117573043A (zh) 2024-01-17 2024-01-17 分布式存储数据的传输方法、装置、系统、设备和介质

Country Status (1)

Country Link
CN (1) CN117573043A (zh)

Citations (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101203825A (zh) * 2005-08-04 2008-06-18 达西系统股份有限公司 具有动态电压调节超级电容的存储控制器
US20090254710A1 (en) * 2008-04-02 2009-10-08 Kabushiki Kaisha Toshiba Device and method for controlling cache memory
CN103246612A (zh) * 2012-02-13 2013-08-14 阿里巴巴集团控股有限公司 一种数据缓存的方法及装置
CN104424125A (zh) * 2013-09-10 2015-03-18 腾讯科技(深圳)有限公司 移动终端缓存的清理方法、装置及移动终端
CN107003943A (zh) * 2016-12-05 2017-08-01 华为技术有限公司 NVMe over Fabric架构中数据读写命令的控制方法、存储设备和系统
CN107015758A (zh) * 2016-01-28 2017-08-04 胡敏 一种新型分布式存储缓存加速方法
CN109309603A (zh) * 2018-11-02 2019-02-05 华青融天(北京)软件股份有限公司 一种动态的负载均衡分配方法及装置
CN109522243A (zh) * 2018-10-22 2019-03-26 郑州云海信息技术有限公司 一种全闪存储中元数据缓存管理方法、装置及存储介质
CN109791522A (zh) * 2017-09-05 2019-05-21 华为技术有限公司 数据迁移的方法、系统及智能网卡
CN110018790A (zh) * 2019-03-26 2019-07-16 华中科技大学 一种保证持久性内存中数据崩溃一致性的方法及系统
CN110032526A (zh) * 2019-04-16 2019-07-19 苏州浪潮智能科技有限公司 一种基于非易失性介质的页缓存方法、系统及设备
CN110086571A (zh) * 2019-04-10 2019-08-02 广州华多网络科技有限公司 一种数据发送及接收的方法、装置及数据处理系统
CN110896406A (zh) * 2018-09-13 2020-03-20 华为技术有限公司 数据存储方法、装置及服务器
CN111538678A (zh) * 2020-04-20 2020-08-14 深圳Tcl数字技术有限公司 数据缓冲方法、设备及计算机可读存储介质
US20210286552A1 (en) * 2020-03-13 2021-09-16 Seagate Technology Llc Data storage system with adaptive cache management
CN113422793A (zh) * 2021-02-05 2021-09-21 阿里巴巴集团控股有限公司 数据传输方法、装置、电子设备及计算机存储介质
CN113626184A (zh) * 2021-06-30 2021-11-09 济南浪潮数据技术有限公司 一种超融合性能优化方法、装置及设备
CN113688072A (zh) * 2020-05-19 2021-11-23 华为技术有限公司 数据处理方法及设备
US20220326877A1 (en) * 2021-04-05 2022-10-13 Apple Inc. TECHNIQUES FOR BALANCING WRITE COMMANDS ON SOLID STATE STORAGE DEVICES (SSDs)
CN115344201A (zh) * 2022-07-13 2022-11-15 阿里巴巴(中国)有限公司 数据存储方法、数据查询方法以及装置
CN115374024A (zh) * 2021-05-21 2022-11-22 华为技术有限公司 一种内存数据排序方法及相关设备
WO2022257685A1 (zh) * 2021-06-07 2022-12-15 华为技术有限公司 存储系统、网卡、处理器、数据访问方法、装置及系统
CN115774592A (zh) * 2022-11-24 2023-03-10 中汽创智科技有限公司 一种数据显示方法、装置、电子设备及存储介质
CN115910170A (zh) * 2022-12-16 2023-04-04 深圳市源微创新实业有限公司 一种固态硬盘的掉电保护方法、装置及存储介质
CN116821011A (zh) * 2023-08-24 2023-09-29 摩尔线程智能科技(北京)有限责任公司 参数确定及数据读写方法、处理器、装置、计算机设备
CN116886719A (zh) * 2023-09-05 2023-10-13 苏州浪潮智能科技有限公司 存储系统的数据处理方法、装置、存储系统、设备及介质
CN117075815A (zh) * 2023-08-30 2023-11-17 郑州云海信息技术有限公司 一种磁盘数据缓冲区管理方法、装置、设备及存储介质
CN117076346A (zh) * 2023-07-24 2023-11-17 龙芯中科(成都)技术有限公司 应用程序数据处理方法、装置及电子设备

Patent Citations (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101203825A (zh) * 2005-08-04 2008-06-18 达西系统股份有限公司 具有动态电压调节超级电容的存储控制器
US20090254710A1 (en) * 2008-04-02 2009-10-08 Kabushiki Kaisha Toshiba Device and method for controlling cache memory
CN103246612A (zh) * 2012-02-13 2013-08-14 阿里巴巴集团控股有限公司 一种数据缓存的方法及装置
CN104424125A (zh) * 2013-09-10 2015-03-18 腾讯科技(深圳)有限公司 移动终端缓存的清理方法、装置及移动终端
CN107015758A (zh) * 2016-01-28 2017-08-04 胡敏 一种新型分布式存储缓存加速方法
CN107003943A (zh) * 2016-12-05 2017-08-01 华为技术有限公司 NVMe over Fabric架构中数据读写命令的控制方法、存储设备和系统
CN109791522A (zh) * 2017-09-05 2019-05-21 华为技术有限公司 数据迁移的方法、系统及智能网卡
CN110896406A (zh) * 2018-09-13 2020-03-20 华为技术有限公司 数据存储方法、装置及服务器
CN109522243A (zh) * 2018-10-22 2019-03-26 郑州云海信息技术有限公司 一种全闪存储中元数据缓存管理方法、装置及存储介质
CN109309603A (zh) * 2018-11-02 2019-02-05 华青融天(北京)软件股份有限公司 一种动态的负载均衡分配方法及装置
CN110018790A (zh) * 2019-03-26 2019-07-16 华中科技大学 一种保证持久性内存中数据崩溃一致性的方法及系统
CN110086571A (zh) * 2019-04-10 2019-08-02 广州华多网络科技有限公司 一种数据发送及接收的方法、装置及数据处理系统
CN110032526A (zh) * 2019-04-16 2019-07-19 苏州浪潮智能科技有限公司 一种基于非易失性介质的页缓存方法、系统及设备
US20210286552A1 (en) * 2020-03-13 2021-09-16 Seagate Technology Llc Data storage system with adaptive cache management
CN111538678A (zh) * 2020-04-20 2020-08-14 深圳Tcl数字技术有限公司 数据缓冲方法、设备及计算机可读存储介质
CN113688072A (zh) * 2020-05-19 2021-11-23 华为技术有限公司 数据处理方法及设备
CN113422793A (zh) * 2021-02-05 2021-09-21 阿里巴巴集团控股有限公司 数据传输方法、装置、电子设备及计算机存储介质
US20220326877A1 (en) * 2021-04-05 2022-10-13 Apple Inc. TECHNIQUES FOR BALANCING WRITE COMMANDS ON SOLID STATE STORAGE DEVICES (SSDs)
CN115374024A (zh) * 2021-05-21 2022-11-22 华为技术有限公司 一种内存数据排序方法及相关设备
WO2022257685A1 (zh) * 2021-06-07 2022-12-15 华为技术有限公司 存储系统、网卡、处理器、数据访问方法、装置及系统
CN113626184A (zh) * 2021-06-30 2021-11-09 济南浪潮数据技术有限公司 一种超融合性能优化方法、装置及设备
CN115344201A (zh) * 2022-07-13 2022-11-15 阿里巴巴(中国)有限公司 数据存储方法、数据查询方法以及装置
CN115774592A (zh) * 2022-11-24 2023-03-10 中汽创智科技有限公司 一种数据显示方法、装置、电子设备及存储介质
CN115910170A (zh) * 2022-12-16 2023-04-04 深圳市源微创新实业有限公司 一种固态硬盘的掉电保护方法、装置及存储介质
CN117076346A (zh) * 2023-07-24 2023-11-17 龙芯中科(成都)技术有限公司 应用程序数据处理方法、装置及电子设备
CN116821011A (zh) * 2023-08-24 2023-09-29 摩尔线程智能科技(北京)有限责任公司 参数确定及数据读写方法、处理器、装置、计算机设备
CN117075815A (zh) * 2023-08-30 2023-11-17 郑州云海信息技术有限公司 一种磁盘数据缓冲区管理方法、装置、设备及存储介质
CN116886719A (zh) * 2023-09-05 2023-10-13 苏州浪潮智能科技有限公司 存储系统的数据处理方法、装置、存储系统、设备及介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
石钊铭: "公共计算环境分布式数据存储优化策略研究", 舰船电子工程, vol. 43, no. 9, 30 September 2023 (2023-09-30) *

Similar Documents

Publication Publication Date Title
US11797180B2 (en) Apparatus and method to provide cache move with non-volatile mass memory system
US11960725B2 (en) NVMe controller memory manager providing CMB capability
US10970003B2 (en) Scalable low-latency storage interface
JP5546635B2 (ja) データ転送装置およびその制御方法
CN107783727B (zh) 一种内存设备的访问方法、装置和系统
CN115167786B (zh) 一种数据存储方法、装置、系统、设备和介质
CN109564502B (zh) 应用于存储设备中的访问请求的处理方法和装置
CN112035381A (zh) 一种存储系统及存储数据处理方法
WO2023015866A1 (zh) 一种数据写入方法、装置、系统、电子设备及存储介质
CN112199309B (zh) 基于dma引擎的数据读取方法、装置和数据传输系统
US10761736B2 (en) Method and apparatus for integration of non-volatile memory
WO2023103704A1 (zh) 数据处理方法、存储介质和处理器
CN110114762B (zh) 用于访问作为字节可寻址存储器的非易失性存储器的方法和设备
KR20080105390A (ko) 플래시 메모리에 사용되는 명령어들을 제어하는 방법 및장치
TW200945033A (en) Memory allocation and access method and device using the same
CN117573043A (zh) 分布式存储数据的传输方法、装置、系统、设备和介质
CN111459402A (zh) 磁盘可控缓冲写方法、控制器、混合io调度方法及调度器
CN104679589A (zh) 系统资源均衡调整方法及装置
WO2012163019A1 (zh) 降低数据类芯片外挂ddr功耗的方法及数据类芯片系统
CN111176566A (zh) 一种支持queue命令的eMMC读写控制方法及存储介质
US11687451B2 (en) Memory allocation manager and method performed thereby for managing memory allocation
CN113377288B (zh) 硬件队列管理系统、方法、固态硬盘控制器及固态硬盘
CN110515535A (zh) 硬盘读写控制方法、装置、电子设备及存储介质
RU2475817C1 (ru) Устройство буферизации потоков данных, считываемых из озу
CN114816216A (zh) 一种容量调整的方法以及相关装置

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