Nothing Special   »   [go: up one dir, main page]

CN115982080A - 数据处理方法、装置、系统、设备、存储介质及程序产品 - Google Patents

数据处理方法、装置、系统、设备、存储介质及程序产品 Download PDF

Info

Publication number
CN115982080A
CN115982080A CN202111605534.3A CN202111605534A CN115982080A CN 115982080 A CN115982080 A CN 115982080A CN 202111605534 A CN202111605534 A CN 202111605534A CN 115982080 A CN115982080 A CN 115982080A
Authority
CN
China
Prior art keywords
data
data access
access command
command
host
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
CN202111605534.3A
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to PCT/CN2022/092526 priority Critical patent/WO2023060891A1/zh
Publication of CN115982080A publication Critical patent/CN115982080A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • 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
    • 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)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请实施例公开了一种数据处理方法、装置、系统、设备、存储介质及程序产品,属于计算机技术领域。在本申请实施例中,主机能够将遵从非块协议的命令转换为遵从块协议的命令,从而由DPU执行非块协议的命令。这样,在后端存储建立数据系统的情况下,主机就能够将数据系统的相关操作卸载到DPU,由DPU处理数据系统的应用发起的数据访问命令,从而减轻主机的计算压力,提高数据访问性能。

Description

数据处理方法、装置、系统、设备、存储介质及程序产品
本申请实施例要求于2021年10月14日提交的申请号为202111196377.5、发明名称为“一种文件系统访问方法”的中国专利申请的优先权,其全部内容通过引用结合在本申请实施例中。
技术领域
本申请实施例涉及计算机技术领域,特别涉及一种数据处理方法、装置、系统、设备、存储介质及程序产品。
背景技术
当前,计算机中的中央处理器(central processing unit,CPU)承受越来越多的计算、网络和存储等压力,而数据处理器(data processing unit,DPU)的出现减轻了CPU的压力,DPU是以数据为中心的加速计算单元。如何更大限度地利用DPU高效处理数据的能力是当前研究的热点。例如,如何利用DPU提升文件系统的数据处理效率是一个研究热点。
发明内容
本申请实施例提供了一种数据处理方法、装置、系统、设备、存储介质及程序产品,能够利用DPU提升数据处理效率,减轻主机的计算压力。所述技术方案如下:
第一方面,提供了一种数据处理方法,该方法由连接主机的DPU执行。在该方法中。DPU接收主机发送的第一数据访问命令后,通过解析第一数据访问命令获得第二数据访问命令。其中,第一数据访问命令遵从块协议,第二数据访问命令遵从非块协议。DPU执行所述第二数据访问命令并向主机反馈执行结果。
在本申请实施例中,主机能够将遵从非块协议的命令转换为遵从块协议的命令,从而由DPU执行非块协议的命令。这样,在后端存储建立数据系统的情况下,主机就能够将数据系统的相关操作卸载到DPU,由DPU处理数据系统的应用发起的数据访问命令,从而减轻主机的计算压力,提高数据访问性能,且通过块协议进行数据访问能够提升数据访问速率。
可选地,DPU解析第一数据访问命令,获得第二数据访问命令,包括:从第一数据访问命令中解析出第一内存地址和第二内存地址;从第一内存地址指向的第一内存区域中获取第二数据访问命令;DPU向所述主机反馈执行结果,包括:将执行结果写入第二内存地址指向的第二内存区域;向主机返回第一响应,以指示主机从第二内存区域中获取执行结果。也即是,第一数据访问命令具有指示双向数据传输的能力,双向数据传输包括主机到DPU的数据传输,以及DPU到主机的数据传输,即通过一个命令实现既写又读。这样,本方案既能够应用于文件系统的场景中,也能够应用于媒体大数据、数据库、数据备份或容器等场景中,即能够处理除文件数据之外的非结构化数据。
可选地,数据系统包括文件系统、媒体数据系统、数据库系统、备份系统或容器系统。
可选地,DPU解析第一数据访问命令,获得第二数据访问命令,包括:从第一数据访问命令中解析出双向指示信息、第一内存地址和第二内存地址,双向指示信息用于指示主机与DPU之间的双向数据传输;基于双向指示信息,从第一内存地址指向的第一内存区域中获取第二数据访问命令;DPU向主机反馈执行结果,包括:基于双向指示信息,将执行结果写入第二内存地址指向的第二内存区域;向主机返回第一响应,以指示主机从第二内存区域中获取执行结果。也即是,第一数据访问命令通过携带双向指示信息来指示双向数据传输。
可选地,第一数据访问命令包括数据传输字段,数据传输字段包括双向指示信息。需要说明的是,诸如第一数据访问命令这样的遵从块协议的命令包括数据传输字段,数据传输字段包括第一指示、第二指示、第三指示或双向指示信息。其中:第一指示用于指示主机与DPU之间无数据传输;第二指示用于指示主机到DPU的数据传输;第三指示用于指示DPU到主机的数据传输。双向指示信息用于指示主机与DPU之间的双向数据传输。也即是,本申请实施例中的第一数据访问命令可以为一个双向传输命令,通过一个双向传输命令来指示双向数据传输。示例性地,第一数据访问命令为一个非易失性高速存储器(non-volatilememory express,NVMe)协议命令,通过扩展NVMe协议,使得NVMe命令支持双向数据传输。
可选地,第一数据访问命令为读命令和写命令的组合命令,双向指示信息包括写命令中的写指示信息和读命令中的读指示信息,写指示信息用于指示主机到DPU的数据传输,读指示信息用于指示DPU到主机的数据传输。也即是,本申请实施例中的第一数据访问命令可以为读写组合命令,通过读写组合命令来指示双向数据传输。
可选地,DPU连接存储设备,存储设备上建立有数据系统,主机具有数据系统的应用,第二数据访问命令为数据系统的应用发起的命令,第二数据访问命令用于访问数据系统中的数据。简单来说,在后端存储建立数据系统,主机无需建立数据系统,主机将数据系统的相关操作卸载到DPU,从而减轻主机负荷,提升数据访问性能。例如,关于文件系统的数据访问,通过块协议实现从主机到存储的直通,提升了文件系统的数据访问效率。
可选地,DPU执行第二数据访问命令,获得执行结果,包括:在DPU缓存有第二数据访问命令所要访问的数据的情况下,从DPU的缓存中获取第二数据访问命令所要访问的数据,以得到执行结果;在DPU未缓存第二数据访问命令所要访问的数据的情况下,根据第二数据访问命令获得第三数据访问命令,向存储设备发送第三数据访问命令。其中,第三数据访问命令用于指示存储设备获得并执行第二数据访问命令,并向DPU返回执行结果,第三数据访问命令遵从块协议。也即是,在DPU的缓存命中的情况下,DPU从缓存中获得执行结果。在DPU的缓存未命中的情况下,DPU通过存储设备中的数据系统获得执行结果。
在本申请实施例中,由于存储设备与DPU进行交互,而DPU对于主机来说只是块设备,因此,存储设备不感知主机,即不与主机直接交互,减少了攻击主机的可能性。
可选地,本申请实施例中的块协议包括下述协议中的至少一种:NVMe协议、小型计算机系统接口(small computer system interface,SCSI)协议。
可选地,DPU接收主机发送的第一数据访问命令包括:基于下述传输方式中的任意一种传输方式接收主机发送的第一数据访问命令:
高速串行计算机扩展总线标准(peripheral component interconnect express,PCIe)点对点传输方式、基于远程直接数据存取的非易失性高速存储(NVMe over remotedirect memory access,NVMe over RDMA)网络传输方式、基于光纤通道的非易失性高速存储(NVMe over fiber channel,NVMe over FC)网络传输方式、基于传输控制协议的非易失性高速存储(NVMe over transmission control protocol,NVMe over TCP)网络传输方式、基于互联网协议的小型计算机系统接口(SCSI over Internet protocol,SCSI overIP)网络传输方式、基于近场通信的小型计算机系统接口(SCSI over near filedcommunication,SCSI over NFC)网络传输方式、基于无线宽带的小型计算机系统接口(SCSI over wireless broadband,SCSI over IB)网络传输方式。
第二方面,提供了一种数据处理方法,该方法由主机执行。根据该方法,主机在获得块协议命令后,并输出该块协议命令,其中,该块协议命令中包括双向指示信息、第一内存地址和第二内存地址,双向指示信息用于指示双向数据传输,第一内存地址用于存储待执行的数据访问命令,第二内存地址用于存储该数据访问命令的执行结果。
在本申请实施例中,主机能够获得并输出块协议命令,通过块协议命令中的双向指示信息来指示双向数据传输,从而实现主机对数据访问命令的相关操作的卸载,减轻主机的计算压力,提升数据访问性能。
可选地,数据访问命令包括非块协议命令。通过这种方式,主机通过输出块协议命令,实现对非块协议命令的相关操作的卸载。
可选地,该方法还包括:获取数据系统的应用发起的数据访问命令;将该数据访问命令写入第一内存地址指向的第一内存区域;从第二内存地址指向的第二内存区域中获得数据访问命令的执行结果。也即是,块协议命令具有指示双向数据传输的能力,即通过一个命令实现既写又读。这样,本方案既能够应用于文件系统的场景中,也能够应用于媒体大数据、数据库、数据备份或容器等场景中,即能够处理除文件数据之外的非结构化数据。
可选地,主机输出块协议命令包括:向DPU发送该块协议命令,该块协议命令用于指示DPU执行数据访问命令。也即是,主机将数据访问命令的相关操作卸载到DPU,由DPU执行数据访问命令,从而减轻主机的计算压力。在该数据访问命令为非块协议命令的情况下,主机将非块协议命令转换为块协议命令,将块协议命令输出到DPU,从而由DPU通过块协议命令的指示来执行非块协议命令。
可选地,块协议包括下述协议中的至少一种:NVMe协议、SCSI协议。
可选地,该数据访问命令用于访问数据系统,数据系统包括文件系统、媒体数据系统、数据库系统或备份系统。
第三方面,提供了一种数据处理方法,该方法由主机执行,该方法包括:获取数据系统的应用发起的非块协议命令,并将该非块协议命令转换为块协议命令,在获得块协议命令后输出该块协议命令。
可选地,主机输出该块协议命令,包括:向DPU发送该块协议命令,以指示DPU获得并执行该非块协议命令,以得到该非块协议命令的执行结果;该方法还包括:主机获取DPU反馈的执行结果。
在本申请实施例中,主机能够将遵从非块协议的命令转换为遵从块协议的命令,从而由DPU执行非块协议的命令。这样,在后端存储建立数据系统的情况下,主机就能够将数据系统的相关操作卸载到DPU,由DPU处理数据系统的应用发起的数据访问命令,从而减轻主机的计算压力,提高数据访问性能。
可选地,主机将该非块协议命令转换为块协议命令,包括:基于该非块协议命令生成块协议命令,该块协议命令携带双向指示信息、第一内存地址和第二内存地址,双向指示信息用于指示主机与DPU之间的双向数据传输;将非块协议命令写入第一内存地址指向的第一内存区域;主机获取DPU反馈的执行结果,包括:接收DPU返回的第一响应;从第二内存地址指向的第二内存区域中获取该执行结果。
第四方面,提供了一种数据处理装置,所述数据处理装置具有实现上述第一方面中数据处理方法行为的功能。所述数据处理装置包括用于实现上述第一方面或第一方面的任意一种实现方式所提供的数据处理方法的一个或多个模块。
具体的,该装置可以用于连接主机的DPU,该装置可以包括接收模块、解析模块、执行模块和反馈模块。其中,接收模块用于接收主机发送的第一数据访问命令,第一数据访问命令遵从块协议。解析模块用于解析第一数据访问命令,获得第二数据访问命令,第二数据访问命令遵从非块协议。执行模块用于执行第二数据访问命令,并获得执行结果。反馈模块用于向主机反馈执行结果。
可选地,解析模块用于从第一数据访问命令中解析出第一内存地址和第二内存地址,并从第一内存地址指向的第一内存区域中获取第二数据访问命令。
反馈模块用于将执行结果写入第二内存地址指向的第二内存区域,并向主机返回第一响应,以指示主机从第二内存区域中获取执行结果。
可选地,解析模块包括:
解析子模块,用于从第一数据访问命令中解析出双向指示信息、第一内存地址和第二内存地址,双向指示信息用于指示主机与DPU之间的双向数据传输;
第一数据传输子模块,用于基于双向指示信息,从第一内存地址指向的第一内存区域中获取第二数据访问命令;
反馈模块包括:
第二数据传输子模块,用于基于双向指示信息,将执行结果写入第二内存地址指向的第二内存区域;
响应子模块,用于向主机返回第一响应,以指示主机从第二内存区域中获取执行结果。
可选地,第一数据访问命令包括数据传输字段,数据传输字段包括双向指示信息。
可选地,第一数据访问命令为读命令和写命令的组合命令,双向指示信息包括写命令中的写指示信息和读命令中的读指示信息,写指示信息用于指示主机到DPU的数据传输,读指示信息用于指示DPU到主机的数据传输。
可选地,DPU连接存储设备,存储设备上建立有数据系统,主机具有数据系统的应用,第二数据访问命令为数据系统的应用发起的命令,第二数据访问命令用于访问数据系统中的数据。
可选地,执行模块,包括:
第一执行子模块,用于在DPU缓存有第二数据访问命令所要访问的数据的情况下,从DPU的缓存中获取第二数据访问命令所要访问的数据,以得到执行结果;
第二执行子模块,用于在DPU未缓存第二数据访问命令所要访问的数据的情况下,将第二数据访问命令转换为第三数据访问命令,向存储设备发送第三数据访问命令,以指示存储设备获得并执行第二数据访问命令,并向DPU返回执行结果,第三数据访问命令遵从块协议。
可选地,数据系统包括文件系统、媒体数据系统、数据库系统或备份系统。
可选地,块协议包括下述协议中的至少一种:NVMe协议、SCSI协议。
第五方面,提供了一种数据处理装置,所述数据处理装置具有实现上述第二方面中数据处理方法行为的功能。所述数据处理装置包括用于实现上述第二方面或第二方面的任意一种实现方式所提供的数据处理方法的一个或多个模块。
第六方面,提供了一种数据处理装置,所述数据处理装置具有实现上述第三方面中数据处理方法行为的功能。所述数据处理装置包括一个或多个模块,该一个或多个模块用于实现上述第三方面或第三方面的任意一种实现方式所提供的数据处理方法。
第七方面,提供了一种数据处理系统,该数据处理系统包括主机和主机连接的DPU,主机用于实现上述第二方面、第二方面的任意一种可能的实现方式、第三方面或第三方面的任意一种可能的实现方式中所提供的数据处理方法,DPU用于实现上述第一方面所提供的数据处理方法。
第八方面,提供了一种DPU,所述DPU包括处理器和通信接口。所述通信接口用于与主机通信。所述处理器被配置为用于执行计算机程序,实现上述第一方面或第一方面的任意一种可能的实现方式所提供的数据处理方法的步骤。
第九方面,提供了一种主机,所述主机包括处理器和存储器,所述存储器用于存储执行上述第二方面或第二方面的任意一种可能的实现方式、第三方面或第三方面的任意一种可能的实现方式中所提供的数据处理方法的程序,以及存储用于实现上述第二方面或第二方面的任意一种可能的实现方式、第三方面或第三方面的任意一种可能的实现方式中所提供的数据处理方法所涉及的数据。所述处理器被配置为用于执行所述存储器中存储的程序。可选地,所述主机还可以包括通信总线,该通信总线用于该处理器与存储器之间建立连接。
第十方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面、第一方面的任意一种可能的实现方式、第二方面、第二方面的任意一种可能的实现方式、第三方面或第三方面的任意一种可能的实现方式中所述的数据处理方法。
第十一方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面、第一方面的任意一种可能的实现方式、第二方面、第二方面的任意一种可能的实现方式、第三方面或第三方面的任意一种可能的实现方式中所述的数据处理方法。
上述第四方面、第五方面、第六方面、第七方面、第八方面、第九方面、第十方面和第十一方面所获得的技术效果与第一方面或第二方面或第三方面中对应的技术手段获得的技术效果近似,在这里不再赘述。
本申请实施例提供的技术方案至少能够带来以下有益效果:
在本申请实施例中,主机能够将遵从非块协议的命令转换为遵从块协议的命令,从而由DPU执行非块协议的命令。这样,在后端存储建立数据系统的情况下,主机就能够将数据系统的相关操作卸载到DPU,由DPU处理数据系统的应用发起的数据访问命令,从而减轻主机的计算压力,提高数据访问性能。
附图说明
图1是本申请实施例提供的一种数据处理方法所涉及的系统架构图;
图2是本申请实施例提供的另一种数据处理方法所涉及的系统架构图;
图3是本申请实施例提供的一种计算机设备的结构示意图;
图4是本申请实施例提供的一种数据处理方法的流程图;
图5是本申请实施例提供的另一种数据处理方法的流程图;
图6是本申请实施例提供的又一种数据处理方法的流程图;
图7是本申请实施例提供的又一种数据处理方法的流程图;
图8是本申请实施例提供的又一种数据处理方法的流程图;
图9是本申请实施例提供的又一种数据处理方法的流程图;
图10是本申请实施例提供的一种数据处理装置的结构示意图;
图11是本申请实施例提供的另一种数据处理装置的结构示意图;
图12是本申请实施例提供的另一种数据处理装置的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
首先需要说明的是,本申请实施例描述的系统架构以及业务场景是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域普通技术人员可知,随着系统架构的演变和新业务场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
为了便于理解,首先对本申请实施例中涉及的一些名词进行介绍。
DPU:数据处理器或数据处理单元,是一种新型可编程多核处理器,以数据为中心的加速计算单元,也是一种片上系统。DPU具有灵活的可编程加速引擎和高性能的网络接口,能够快速处理数据并有效地将数据传输到主机。
块协议:与块设备进行通信的相关协议,也可称为块访问协议。例如,NVMe协议、SCSI协议等。
NVMe协议:一种非易失性内存主机控制器接口规范。针对使用PCIe规范的固态硬盘(solid state disk,SSD)系统所开发的控制器接口标准,包含优化的控制器寄存器接口、命令集、输入输出(input/output,IO)队列管理等,规范SSD控制器与操作系统之间的通信连接及数据传输。NVMe协议的特点有很多,例如,支持多队列,最大支持65535个IO队列,每个IO队列支持64K个IO并发,支持优先级队列。
图1是本申请实施例提供的一种数据处理方法所涉及的系统架构图。参见图1,该系统包括主机101和DPU102。主机101与DPU102之间建立有通信连接,主机101与DPU102之间的通信遵从块协议(即块设备的相关协议)。换句话说,DPU102向主机101上报为一个块设备。
其中,主机101用于获得并输出块协议命令。可选地,主机101用于将块协议命令输出给DPU102。示例性地,主机用于获取数据系统的应用发起的数据访问命令,将该数据访问命令转换为块协议命令。主机101还用于向DPU发送块协议命令,该块协议命令用于指示DPU102获得并执行该数据访问命令。主机101还用于获得DPU102反馈的执行结果。
可选地,该数据访问命令包括非块协议命令。即,主机101用于将非块协议命令转换为块协议命令。需要说明的是,块协议命令为遵从块协议的命令,非块协议命令为遵从非块协议的命令。块协议包括NVMe协议、SCSI协议等。
DPU102用于接收主机101发送的块协议命令,解析块协议命令,获得数据系统的应用发起的数据访问命令,执行该数据访问命令,获得执行结果,向主机101反馈该执行结果。
可选地,参见图2,该系统还包括存储设备103,存储设备103也可称为存储节点,存储设备103与DPU102之间建立有通信连接,DPU102与存储设备103之间的通信遵从块协议(即块设备的相关协议)。换句话说,存储设备103向DPU102上报为一个块设备。在本申请实施例中,存储设备103上建立有数据系统。在DPU缓存有该数据访问命令所要访问的数据的情况下,DPU102用于从缓存中获取该数据访问命令所要访问的数据,以得到执行结果。在DPU102未缓存该数据访问命令所要访问的数据的情况下,即,在DPU102的缓存(cache)未命中的情况下,DPU102还用于根据该数据访问命令获得一个块协议命令,向存储设备103发送所获得的块访问命令。存储设备103用于在接收到该块协议命令后,解析该块协议命令,获得并执行该数据访问命令,以得到执行结果,向DPU102返回该执行结果。简单来说,在DPU的缓存未命中的情况下,由存储设备103执行数据系统的应用发起的数据访问命令。
请参考图3,图3是根据本申请实施例示出的一种计算机设备的结构示意图。该计算机设备包括图1或图2中所示的主机101和DPU102。该计算机设备包括一个或多个处理器301、通信总线302、存储器303以及一个或多个通信接口304。
处理器301为一个通用中央处理器(central processing unit,CPU)、网络处理器(network processing,NP)、数据处理器(DPU)、微处理器、或者为一个或多个用于实现本申请方案的集成电路,例如,专用集成电路(application-specific integrated circuit,ASIC),可编程逻辑器件(programmable logic device,PLD)或其组合。可选地,上述PLD为复杂可编程逻辑器件(complex programmable logic device,CPLD),现场可编程逻辑门阵列(field-programmable gate array,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。可选地,主机101包括CPU。
通信总线302用于在上述组件之间传送信息。可选地,通信总线302分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
可选地,存储器303为只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、电可擦可编程只读存储器(electrically erasableprogrammable read-only memory,EEPROM)、光盘(包括只读光盘(compact disc read-only memory,CD-ROM)、压缩光盘、激光盘、数字通用光盘、蓝光光盘等)、磁盘存储介质或者其它磁存储设备,或者是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其它介质,但不限于此。存储器303独立存在,并通过通信总线302与处理器301相连接,或者,存储器303与处理器301集成在一起。
通信接口304使用任何收发器一类的装置,用于与其它设备或通信网络通信。通信接口304包括有线通信接口,可选地,还包括无线通信接口。其中,有线通信接口例如以太网接口等。可选地,以太网接口为光接口、电接口或其组合。无线通信接口为无线局域网(wireless local area networks,WLAN)接口、蜂窝网络通信接口或其组合等。
可选地,在一些实施例中,计算机设备包括多个处理器,如图3中所示的处理器301和处理器305。这些处理器中的每一个为一个单核处理器,或者一个多核处理器。可选地,这里的处理器指一个或多个设备、电路、和/或用于处理数据(如计算机程序指令)的处理核。
在具体实现中,作为一种实施例,计算机设备还包括输出设备306和输入设备307。输出设备306和处理器301通信,能够以多种方式来显示信息。例如,输出设备306为液晶显示器(liquid crystal display,LCD)、发光二级管(light emitting diode,LED)显示设备、阴极射线管(cathode ray tube,CRT)显示设备或投影仪(projector)等。输入设备307和处理器301通信,能够以多种方式接收用户的输入。例如,输入设备307是鼠标、键盘、触摸屏设备或传感设备等。
在一些实施例中,存储器303用于存储执行本申请方案的程序代码310,处理器301能够执行存储器303中存储的程序代码310。该程序代码中包括一个或多个软件模块,该计算机设备能够通过处理器301以及存储器303中的程序代码310,来实现下文图4至图8实施例提供的数据处理方法。
图4是本申请实施例提供的一种数据处理方法的流程图,该方法应用于数据处理系统。请参考图4,该方法包括如下步骤。
步骤401:主机获取数据系统的应用发起的第二数据访问命令,第二数据访问命令遵从非块协议。
在本申请实施例中,主机具有数据系统的应用,主机获取数据系统的应用发起的数据访问命令,为了便于区分,在步骤401中将数据系统的应用发起的数据访问命令称为第二数据访问命令。第二数据访问命令遵从非块协议,即,第二数据访问命令不是遵从块协议的命令。简单来说,第二数据访问命令为一个非块协议命令。可选地,数据系统包括文件系统、媒体数据系统、数据库系统、备份系统或容器系统等。以文件系统为例,主机具有文件系统的应用,主机获取文件系统的应用发起的文件访问命令,该文件访问命令即为一个遵从非块协议的数据访问命令。其中,块协议包括NVMe协议或SCSI协议等。
可选地,第二数据访问命令包括操作指示信息和操作参数。以文件系统为例,第二数据访问命令可以为open命令、read命令、mount命令等,假设第二数据访问命令为open命令,open命令包括指示open操作的操作指示信息以及open操作的操作参数。
可选地,主机包括CPU,主机的CPU获取数据系统的应用发起的第二数据访问命令。
可选地,主机的CPU包括数据适配器,主机通过数据适配器获取数据系统的应用发起的第二数据访问命令。示例性地,数据适配器劫持用户态的文件系统操作,得到第二文件访问命令。
可选地,主机上的数据适配器为NVMe文件系统适配器(NVMe filesystemadapter,NVMe-FS Ada)、NVMe启动器(NVMe initiate,NVMe-INI)、数据库适配器(databaseadapter,DB-Ada)、Hadoop分布式文件系统适配器(Hadoop distributed filesystemadapter,HDFS-Ada)、媒体数据适配器、备份数据适配器或容器应用相关的数据适配器等。
步骤402:主机将第二数据访问命令转换为第一数据访问命令,第一数据访问命令遵从块协议。
为了便于区分,将主机生成的遵从块协议的命令称为第一数据访问命令,遵从块协议的命令称为块协议命令。在本申请实施例中,为了更大限度地利用DPU高效处理数据的能力,减少主机的计算开销,将数据系统的相关操作卸载到DPU上,即由DPU执行关于数据系统的第二数据访问命令。而由于DPU对于主机来说是一个块设备,DPU与主机之间的通信遵从块协议,为了DPU能够执行遵从非块协议的第二数据访问命令,因此,主机需要将遵从非块协议的第二数据访问命令转换为遵从块协议的第一数据访问命令,也即是,主机需要进行协议转换。
在一种实现方式中,主机基于第二数据访问命令生成第一数据访问命令,将第二数据访问命令写入第一内存地址指向的第一内存区域。其中,第一数据访问命令携带第一内存地址和第二内存地址。第二内存地址指向第二内存区域,第一内存区域和第二内存区域均为主机的内存区域。需要说明的是,第一数据访问命令所携带的第一内存地址用于指示DPU获取第一内存区域中的第二数据访问命令,第一数据访问命令所携带的第二内存地址用于指示DPU将第二数据访问命令对应的执行结果写入第二内存区域。也即是,第一数据访问命令具有指示双向数据传输的能力,双向数据传输包括主机到DPU的数据传输,以及DPU到主机的数据传输,即主机既能写又能读。其中,DPU从主机获取第二数据访问命令的过程是主机写的过程,DPU将执行结果写回主机的过程是主机读的过程。也即是,第一数据访问命令通过所携带的第一内存地址和第二内存地址来间接指示主机与DPU之间的双向数据传输。
在另一种实现方式中,主机基于第二数据访问命令生成第一数据访问命令,将第二数据访问命令写入第一内存地址指向的第一内存区域。其中,第一数据访问命令携带双向指示信息、第一内存地址和第二内存地址。第二内存地址指向第二内存区域,第一内存区域和第二内存区域均为主机的内存区域。需要说明的是,第一数据访问命令所携带的双向指示信息用于指示DPU获取第一内存地址所指向的第一内存区域中的第二数据访问命令,第一数据访问命令所携带的双向指示信息用于指示DPU将第二数据访问命令对应的执行结果写入第二内存地址所指向的第二内存区域。也即是,第一数据访问命令通过双向指示信息直接指示主机与DPU主机之间的双向数据传输。
可选地,第一内存区域和第二内存区域为主机内存中的缓冲(buffer)区,第一内存区域为第一缓冲区,第二内存区域为第二缓冲区。可选地,第一内存地址和第二内存地址均为地址指针。需要说明的是,第一内存地址和第二内存地址为不同的地址,在一些情况下,第一内存地址和第二内存地址为相同的地址,本申请实施例对此不作限定。若第一内存地址和第二内存地址为不同的地址,那么,第一数据访问命令还携带写向指示信息和读向指示信息,其中,写向指示信息用于指示第一内存地址为写向地址,读向指示信息用于指示第二内存地址为读向地址。可选地,第一数据访问命令携带一个内存地址,以指示该内存地址既为第一内存地址,又为第二内存地址,也即是,该内存地址即是写向地址也是读写地址。
可选地,第一数据访问命令包括数据传输字段,该数据传输字段包括双向指示信息。也即是,本方案能够通过数据传输字段所携带的内容来指示主机与DPU主机的双向数据传输。需要说明的是,数据传输字段是诸如第一数据访问命这样的遵从块协议的命令中所需携带的一个字段,遵从块协议的命令中的数据传输字段包括第一指示、第二指示、第三指示或第四指示。其中,第一指示用于指示主机与DPU之间无数据传输,第二指示用于指示主机到DPU的数据传输,第三指示用于指示DPU到主机的数据传输,第四指示用于指示主机与DPU之间的双向数据传输,第四指示即双向指示信息。
可选地,第一数据访问命令为双向传输命令。以NVMe协议为例,该双向传输命令为NVMe双向传输命令,NVMe双向传输命令包括数据传输字段,数据传输字段携带双向指示信息。也即是,本方案可以通过扩展NVMe协议,实现基于一个命令的双向数据传输。
示例性地,在本申请实施例中,一个NVMe命令中data transfer字段的值可以为‘00b’、‘01b’、‘10b’或‘11b’,其中,‘00b’为第一指示,‘01b’为第二指示,‘10b’为第三指示,‘11b’为第四指示。NVMe双向传输命令中数据传输字段为命令字中的data transfer字段,该data transfer字段的值为‘11b’,‘11b’即为双向(bidirectional)传输指示信息。可选地,NVMe双向传输命令的组合操作码(combined opcode)为‘A3h’,表示NVMe双向传输命令为A3命令。NVMe双向传输命令的标准命令(standard command)字段为‘1b’。NVMe双向传输命令的功能(function)字段为‘01000b’或者为其他的二进制值,功能字段用于指示NVMe双向传输命令的功能包括实现本方案。
可选地,第一数据访问命令可以为读写组合命令,即读命令和写命令的组合命令。以NVMe协议为例,第一数据访问命令为NVMe读命令和NVMe写命令的组合命令。以SCSI协议为例,第一数据访问命令为SCSI读命令和SCSI写命令的组合命令。也即是,本方案也可以通过扩展NVMe命令或SCSI命令,实现基于读写组合命令的双向传输。其中,写命令包括写指示信息,写指示信息用于指示主机到DPU的数据传输。读命令包括读指示信息,读指示信息用于指示DPU到主机的数据传输。第一数据访问命令中的双向指示信息包括写指示信息和读指示信息。
示例性地,以NVMe协议为例,NVMe协议提供组合命令的机制,可以将多个命令组合在一起执行。在本申请实施例中,将写(write)命令和读(read)命令组合在一起,提供既读又写的能力,从而实现文件系统等数据系统相关的数据访问命令由DPU来完成。
可选地,在第一数据访问命令为双向传输命令(如A3命令)的情况下,第一内存区域为该双向传输命令对应的发送缓冲区,第二内存区域为该双向传输命令对应的响应缓冲区(response buffer)。在第一数据访问命令为读写组合命令的情况下,第一内存区域为写命令对应的缓冲区,第二内存区域为读命令对应的缓冲区。
可选地,由前述可知,主机包括数据适配器,主机通过数据适配器获取数据系统的应用发起的第二数据访问命令,那么,主机还通过数据适配器将第二数据访问命令转换为第一数据访问命令,即数据适配器基于第二数据访问命令生成第一数据访问命令,以及将第二数据访问命令写入第一内存地址指向的第一内存区域。
步骤403:主机向DPU发送第一数据访问命令。
在本申请实施例中,主机将第二数据访问命令转换为第一数据访问命令之后,向DPU发送第一数据访问命令。
可选地,主机基于下述传输方式中的任意一种传输方式,向DPU发送第一数据访问命令:PCIe点对点传输方式、NVMe over RDMA网络传输方式、NVMe over FC网络传输方式、NVMe over TCP网络传输方式、SCSI over IP网络传输方式、SCSI over NFC网络传输方式、SCSI over IB网络传输方式等。
由前述可知,在一种实现方式中,主机包括数据适配器,主机通过数据适配器生成第一数据访问命令。可选地,在这种实现方式中,主机还包括DPU驱动,主机通过数据适配器生成第一数据访问命令之后,通过数据适配器将第一数据访问命令发送给DPU驱动,通过DPU驱动将第一数据访问命令发送给DPU。
可选地,DPU驱动为用户态驱动或内核态驱动。用户态驱动如存储性能开发工具包(storage performance development kit,SPDK)中的NVMe驱动。在DPU驱动为用户态驱动的情况下,本方案无需从用户态到内核态的转换,能够提升数据处理效率。
步骤404:DPU接收主机发送的第一数据访问命令。
在本申请实施例中,主机向DPU发送第一数据访问命令之后,DPU接收主机发送的第一数据访问命令。示例性地,DPU包括NVMe目标器(NVMe_target,NVMe_TGT),DPU通过NVMe_TGT接收第一数据访问命令。
可选地,DPU基于步骤403中所介绍的任意一种传输方式,接收主机发送的第一数据访问命令。例如,PCIe点对点传输方式、NVMe over RDMA网络传输方式、SCSI over IP网络传输方式等。
步骤405:DPU解析第一数据访问命令,获得第二数据访问命令。
在本申请实施例中,DPU接收到第一数据访问命令之后,解析第一数据访问命令,获得第二数据访问命令。
可选地,由前述可知,在一种实现方式中,第一数据访问命令携带第一内存地址和第二内存地址,那么,DPU从第一数据访问命令中解析出第一内存地址和第二内存地址。其中,第一内存地址和第二内存地址间接指示主机与DPU之间的双向数据传输,包括主机到DPU的数据传输,以及DPU到主机的数据传输。其中,主机到DPU的数据传输为双向数据传输中主机写数据的过程,DPU到主机的数据传输为双向传输中主机读数据的过程。在本申请实施例中,先进行双向数据传输中主机写数据的过程,再进行双向数据传输中主机读数据的过程。那么,DPU解析第一数据访问命令后,先从第一内存地址指向的第一内存区域中获取第二数据访问命令。
可选地,由前述可知,在另一种实现方式中,第一数据访问命令携带双向指示信息、第一内存地址和第二内存地址,那么,DPU从第一数据访问命令中解析出双向指示信息、第一内存地址和第二内存地址。其中,双向指示信息用于指示主机与DPU之间的双向数据传输。那么,DPU解析第一数据访问命令后,基于该双向指示信息,先从第一内存地址指向的第一内存区域中获取第二数据访问命令。
其中,在第一内存地址和第二内存地址为不同的内存地址的情况下,由前述可知,这种情况下,第一数据访问命令还携带写向指示信息和读向指示信息,那么,DPU从第一数据访问命令中还解析出写向指示信息和读向指示信息。DPU基于写向指示信息确定第一内存地址为写向地址,从写向地址(即第一内存地址)对应的第一内存区域中获取第二数据访问命令。在第一内存地址和第二内存地址为相同的内存地址的情况下,DPU直接从该内存地址获取第二数据访问命令。
可选地,DPU包括控制器,DPU的控制器解析第一数据访问命令,获得第二数据访问命令,将第二数据访问命令放入DPU的内存中,以便于DPU基于DPU的内存来执行第二数据访问命令。
示例性地,假设DPU的控制器包括NVMe_TGT,那么,DPU通过NVMe_TGT解析第一数据访问命令,获得第二数据访问命令。
步骤406:DPU执行第二数据访问命令,获得执行结果。
由前述可知,在本申请实施例中,主机具有数据系统的应用,而数据系统的应用发起的第二数据访问命令由DPU执行,在一种实现方式中,DPU连接的存储设备上建立有数据系统,DPU可能缓存有数据系统中的一些数据。基于此,DPU基于缓存中的数据,来执行第二数据访问命令,获得执行结果。示例性地,在DPU缓存有第二数据访问命令所要访问的数据的情况下,DPU从缓存中获取第二数据访问命令所要访问的数据,以得到执行结果。也即是,在DPU能够在缓存(cache)命中的情况下,DPU基于缓存中的数据得到执行结果。
示例性地,以第二数据访问命令为文件系统的open命令为例,第二数据访问命令包括指示open操作的操作指示信息以及open操作的操作参数,DPU按照该操作参数执行open操作,从缓存中获取所要打开的文件的句柄等数据,以得到执行结果。若DPU缓存有该文件的句柄等数据,说明在DPU的缓存命中,DPU能够从缓存中获得执行结果。
可选地,DPU包括控制器,DPU的控制器将第二数据访问命令放入DPU的内存中,DPU的控制器执行第二数据访问命令,将执行结果放入DPU的内存。
可选地,DPU的控制器包括NVMe_TGT和语义转换模块SHIM,DPU通过NVMe_TGT接收并解析第一数据访问命令,获得第一内存区域中的第二数据访问命令之后,NVMe_TGT将第二数据访问命令发送给SHIM,SHIM执行第二数据访问命令,得到执行结果。
在DPU未缓存第二数据访问命令所要访问的数据的情况下,DPU根据第二数据访问命令转换获得第三数据访问命令,例如,DPU将第二数据访问命令转换为第三数据访问命令。然后,DPU向存储设备发送第三数据访问命令。第三数据访问命令用于指示存储设备获得并执行第二数据访问命令,并向DPU返回执行结果。其中,第三数据访问命令遵从块协议,即,第三数据访问命令也为一个块协议命令。也即是,在DPU的缓存未命中的情况下,由于存储设备上建立有数据系统,因此,由存储设备执行第二数据访问命令。
其中,DPU将第二数据访问命令转换为第三数据访问命令的实现方式,类似于主机将第二数据访问命令转换为第一数据访问命令的实现方式。示例性地,DPU基于第二数据访问命令生成第三数据访问命令,以及将第二数据访问命令写入第三内存地址指向的第三内存区域中。其中,第三数据访问命令包括第三内存地址和第四内存地址,或者,第三数据访问命令包括双向指示信息、第三内存地址和第四内存地址,第三内存地址和第四内存地址为DPU的内存地址。需要说明的是,第三数据访问命令与第一数据访问命令遵从的块协议相同或者不同。
在第三数据访问命令包括第三内存地址和第四内存地址的实现方式中,存储设备接收到第三数据访问命令之后,解析第三数据访问命令,获得第三内存地址和第四内存地址。存储设备从第三内存地址指向的第三内存区域中获得第二数据访问命令。存储设备执行第二数据访问命令,得到执行结果。存储设备将该执行结果写入第四内存地址指向的第四内存区域。存储设备向DPU发送第二响应,以指示DPU获得第四内存区域中的执行结果。DPU接收到第二响应之后,获得第四内存区域中的执行结果。
在第三数据访问命令包括双向指示信息、第三内存地址和第四内存地址的实现方式中,存储设备接收到第三数据访问命令之后,解析第三数据访问命令,获得双向指示信息、第三内存地址和第四内存地址。存储设备基于该双向指示信息,从第三内存地址指向的第三内存区域中获得第二数据访问命令。存储设备执行第二数据访问命令,得到执行结果。存储设备基于该双向指示信息,将该执行结果写入第四内存地址指向的第四内存区域。存储设备向DPU发送第二响应,以指示DPU获得第四内存区域中的执行结果。DPU接收到第二响应之后,获得第四内存区域中的执行结果。
可选地,DPU基于下述任意一种传输方式向存储设备发送第三数据访问命令:NVMeover RDMA网络传输方式、NVMe over FC网络传输方式、NVMe over TCP网络传输方式、SCSIover IP网络传输方式、SCSI over NFC网络传输方式、SCSI over IB网络传输方式等。
步骤407:DPU向主机反馈执行结果。
在本申请实施例中,DPU在获得执行结果后,向主机反馈执行结果。
由前述可知,在一种实现方式中,第一数据访问命令携带第一内存地址和第二内存地址,那么,DPU在获得执行结果后,将执行结果写入第二内存地址指向的第二内存区域,以及向主机返回第一响应,以指示主机从第二内存区域中获取执行结果。在另一种实现方式中,第一数据访问命令携带双向指示信息、第一内存地址和第二内存地址,那么,DPU在获得执行结果后,基于该双向指示信息,将执行结果写入第二内存地址指向的第二内存区域,以及向主机返回第一响应,以指示主机从第二内存区域中获取执行结果。
示例性地,主机中的CPU包括SPDK,DPU包括NVMe_TGT和SHIM。DPU中的SHIM执行第二数据访问命令,得到执行结果后,将执行结果写入第二内存区域。SHIM将第一响应通过NVMe_TGT发送给SPDK。
步骤408:主机获取DPU反馈的执行结果。
在一种实现方式中,主机接收DPU返回的第一响应,从第二内存地址指向的第二内存区域中获取执行结果。其中,第一响应是对第一数据访问命令的响应,主机接收到第一响应之后,基于第一响应能够确定第一响应是对第一数据访问命令的响应,那么主机即能够知道需要从第二内存地址指向的第二内存区域获取执行结果。
可选地,主机包括数据适配器和DPU驱动,主机通过DPU驱动接收第一响应,DPU驱动将第一响应发送给数据适配器,数据适配器从第二内存地址指向的第二内存区域中获取执行结果。
在本申请实施例中,主机在获取该执行结果之后,将该执行结果返回给数据系统的应用。示例性地,主机中的数据适配器获取执行结果之后,将执行结果反馈给数据系统的应用。
以上介绍了本申请实施例提供的数据处理方法的实现过程。接下来将以文件系统为例,通过几个示例对上述过程再次进行解释说明。
示例1,假设文件系统的应用发起了一个open命令,主机通过DPU执行open命令,得到执行结果。在该示例1中以上述扩展的A3命令指示双向传输为例进行介绍。该过程包括如下步骤。
1.文件系统的应用发起open命令,该open命令携带open操作的操作指示信息和操作参数,操作参数包括pathname、flags、mode等。
2.主机获取该open命令,生成一个A3命令,将open操作的操作指示信息和操作参数写入A3命令的发送buffer区。其中,该A3命令携带双向指示信息‘11b’以及A3命令的发送buffer区和响应buffer区的地址。
3.主机将该A3命令下发给DPU。
4.DPU接收该A3命令,解析该A3命令,从A3命令的发送buffer区读取open操作的操作指示信息和操作参数。
5.DPU按照open操作的操作参数执行open操作,得到执行结果。
6.DPU将执行结果写入A3命令的响应buffer区。
7.DPU向主机发送该A3命令的响应。
8.主机接收该A3命令的响应,从该A3命令的响应buffer区获取执行结果。
9.主机将执行结果返回给文件系统的应用。
示例2,假设文件系统的应用发起了一个read命令,主机通过DPU执行read命令,得到执行结果。在该示例2中以上述扩展的A3命令指示双向传输为例进行介绍。该过程包括如下步骤。
1.文件系统的应用发起read命令,该read命令携带read操作的操作指示信息和操作参数,操作参数包括pathname、flags、mode等。
2.主机获取该read命令,生成一个A3命令,将read操作的操作指示信息和操作参数写入A3命令的发送buffer区。其中,该A3命令携带双向指示信息‘11b’以及A3命令的发送buffer区和响应buffer区的地址。
3.主机将该A3命令下发给DPU。
4.DPU接收该A3命令,解析该A3命令,从A3命令的发送buffer区读取read操作的操作指示信息和操作参数。
5.DPU按照open操作的操作参数执行open操作,得到执行结果。
6.DPU将执行结果写入A3命令的响应buffer区。
7.DPU向主机发送该A3命令的响应。
8.主机接收该A3命令的响应,从该A3命令的响应buffer区获取执行结果。
9.主机将执行结果返回给文件系统的应用。
示例3,假设文件系统的应用发起了一个mount命令,主机通过DPU执行mount命令,得到执行结果。在该示例3中以上述扩展的读写组合命令指示双向传输为例进行介绍。该过程包括如下步骤。
1.文件系统的应用发起mount命令,该mount命令携带mount操作的操作指示信息和操作参数,操作参数包括[-fnrsvw]、[-t fstype]、[-o options]、device dir等。
2.主机获取该mount命令,生成读写组合命令,包括一个写命令和一个读命令,将mount操作的操作指示信息和操作参数写入写命令的buffer区。其中,写命令携带双写指示信息和写命令的buffer区的地址,读命令携带读指示信息和读命令的buffer区的地址。
3.主机将该读写组合命令下发给DPU。
4.DPU接收该读写组合命令,解析该读写组合命令,从写命令的buffer区读取open操作的操作指示信息和操作参数。
5.DPU按照mount操作的操作参数执行mount操作,得到执行结果。
6.DPU将执行结果写入读命令的buffer区。
7.DPU向主机发送该读写组合命令的响应。
8.主机接收该读写组合命令的响应,从该读命令的buffer区获取执行结果。
9.主机将执行结果返回给文件系统的应用。
示例4,假设文件系统的应用发起了一个read命令,主机通过DPU执行read命令,得到执行结果。在该示例4中以上述扩展的读写组合命令指示双向传输为例进行介绍。该过程包括如下步骤。
1.文件系统的应用发起readfile命令,该readfile命令携带readfile操作的操作指示信息和操作参数,操作参数包括pathname、flags、length、count等。
2.主机获取该readfile命令,生成读写组合命令,包括一个写命令和一个读命令,将readfile操作的操作指示信息和操作参数写入写命令的buffer区。其中,写命令携带写指示信息和写命令的buffer区的地址,读命令携带读指示信息和读命令的buffer区的地址。
3.主机将该读写组合命令下发给DPU。
4.DPU接收该读写组合命令,解析该读写组合命令,从写命令的buffer区读取readfile操作的操作指示信息和操作参数。
5.DPU按照readfile操作的操作参数执行readfile操作,得到执行结果。
6.DPU将执行结果写入读命令的buffer区。
7.DPU向主机发送该读写组合命令的响应。
8.主机接收该读写组合命令的响应,从该读命令的buffer区获取执行结果。
9.主机将执行结果返回给文件系统的应用。
接下来再以主机内部的模块与DPU内部的模块之间的交互为例,对本申请实施例提供的数据处理方法是实现过程进行介绍。
图5是本申请实施例提供的另一种数据处理方法的流程图。参见图5,主机包括数据适配器和DPU驱动,主机通过数据适配器获取数据系统的应用发起的第二数据访问命令(非块协议命令),数据适配器将第二数据访问命令转换为第一数据访问命令(块协议命令),将第一数据访问命令传递给DPU驱动。DPU驱动将第一数据访问命令通过块设备的方式下发给DPU。DPU接收到第一数据访问命令后,通过解析第一数据访问命令,获得第二数据访问命令。DPU执行第二数据访问命令,获得执行结果,将执行结果通过DPU驱动和数据适配器反馈给主机。
图6是本申请实施例提供的又一种数据处理方法的流程图。参见图6,主机具有数据系统的应用(application,APP),该数据系统包括用户空间文件系统(filesystem inuserspace,FUSE)、数据库(database,DB)系统、Hadoop分布式文件系统(Hadoopdistributed file system)等,相应地,主机包括用户空间文件系统的应用程序接口(FUSEapplication programming interface,FUSE-API)、数据库系统的应用程序接口(DB-API),Hadoop分布式文件系统的应用程序接口(HDFS-API)等。主机还包括NVMe-FS Adapter、DB-Adapter、HDFS-Adapter等。主机还包括SPDK。DPU具有FUSE、DB系统、HDFS等的缓存。某APP发起第二数据访问命令(非块协议命令),主机中该APP对应的适配器通过对应的API获取第二数据访问命令,将第二数据访问命令转换为第一数据访问命令(非块协议命令),将第一数据访问命令发送给SPDK。SPDK将第一数据访问命令下发给DPU。DPU接收到第一数据访问命令后,解析第一数据访问命令,获得第二数据访问命令。DPU执行第二数据访问命令,得到执行结果。DPU将执行结果通过SPDK和对应的适配器反馈给主机。主机把执行结果返回给相应APP。
图7是本申请实施例提供的又一种数据处理方法的流程图。参见图7,主机(HOST)具有数据系统的应用(APP),以该数据系统包括数据库系统为例,主机包括数据库适配器(DB-Ada)和SPDK。SPDK包括NVMe_Driver(NVMe_Driv)。DPU包括NVMe_TGT和SHIM。DPU向主机上报为一个PCIe块设备。某APP发起一个关于数据库系统的第二数据访问命令(非块协议命令),数据库适配器获取第二数据访问命令,将第二数据访问命令转换为第一数据访问命令(非块协议命令),假设spdk_NVMe_ns_cmd_readv/writev()表示第一数据访问命令,第一数据访问命令为读写组合命令。数据库适配器将第一数据访问命令传递给SPDK,SPDK通过NVMe_Driver将第一数据访问命令下发给DPU。DPU中的NVMe_TGT接收第一数据访问命令,解析第一数据访问命令,从主机内存池获取写命令的缓冲区中的第二数据访问命令。NVMe_TGT将第二数据访问命令传递给SHIM。SHIM执行第二数据访问命令,得到执行结果,将执行结果通过读命令的缓冲区反馈给主机。
图8是本申请实施例提供的又一种数据处理方法的流程图。参见图8,主机(HOST)具有数据系统的应用(APP),主机还包括NVMe-INI。DPU包括NVMe_TGT和SHIM。以第一数据访问命令为读写组合命令为例,主机上的APP发起一个第二数据访问命令(request,Req)到NVMe-INI,NVMe-INI生成读写组合命令(w+r),将该读写组合命令下发给DPU。DPU上的NVMe_TGT接收该读写组合命令,解析该读写组合命令,获得第二数据访问命令,将第二数据访问命令发送给SHIM,由SHIM执行第二数据访问请求,得到执行结果,该执行结果基于响应(response,Res)反馈给主机中的NVMe_INI。NVMe_INI将执行结果返回给APP。
在以上介绍的实现方式中,主机与DPU之间通过双向传输命令或读写组合命令实现写向和读向的数据传输,从而实现主机访问DPU或存储设备上的数据系统中的数据。在另一些实现方式中,主机与DPU之间也可以通过异步事件通知机制,实现双向数据传输,例如,主机通过异步事件通知机制向DPU下发数据访问请求,DPU在有数据需要发送到APP时,将数据通过异步事件通知机制反馈给主机,主机将该数据返回给APP。
综上所述,在本申请实施例中,主机能够将遵从非块协议的命令转换为遵从块协议的命令,从而由DPU执行非块协议的命令。这样,在后端存储建立数据系统的情况下,主机就能够将数据系统的相关操作卸载到DPU,由DPU处理数据系统的应用发起的数据访问命令,从而减轻主机的计算压力,提高数据访问性能。简单来说,数据系统相关的操作(如文件操作等)从主机直通到DPU或存储设备,减少主机负荷。
另外,本方案通过扩展块协议,使得遵从块协议的一些命令具备双向传输的能力,这样,本方案既能够应用于文件系统的场景中,也能够应用于媒体大数据、数据库、数据备份或容器等场景中,即能够处理除文件数据之外的非结构化数据。并且,本方案使得用户在现有存储区域网络(storage area network,SAN)的情况下,无需新建网络,如网络附加存储(network attached storage,NAS)网络,也能够利用存储设备提供的数据系统的能力,如NAS能力。除此之外,由于DPU与存储设备大都是自研设备,几乎不存在兼容性问题。且由于存储设备与DPU进行交互,而DPU对于主机来说只是块设备(即PCIe设备或NVMe设备),因此,存储设备不感知主机,即不与主机直接交互,减少了攻击主机的可能性。
图9是本申请实施例提供的又一种数据处理方法的流程图。参见图9,该方法包括如下步骤。
步骤901:主机获得块协议命令,该块协议命令中包括双向指示信息、第一内存地址和第二内存地址,该双向指示信息用于指示双向数据传输,第一内存地址用于存储待执行的数据访问命令,第二内存地址用于存储该数据访问命令的执行结果。
在本申请实施例中,主机获得块协议命令。示例性地,主机获取数据系统的应用发起的数据访问命令,基于该数据访问命令生成该块协议命令。主机还将该数据访问命令写入第一内存地址指向的第一内存区域。需要说明的是,步骤901中主机获取块协议命令的具体实现方式,可以参照图4实施例中步骤401和步骤402中主机获得第一数据访问命令的相关介绍,这里不再赘述。
可选地,该数据访问命令包括非块协议命令。也即是,主机能够基于非块协议命令生成块协议命令,可以理解为主机将遵从非块协议的命令转换为遵从块协议的命令。可选地,块协议包括下述协议中的至少一种:NVMe协议、SCSI协议。
在本申请实施例中,数据访问命令用于访问数据系统。可选地,数据系统包括文件系统、媒体数据系统、数据库系统、备份系统或容器系统等。
步骤902:主机输出该块协议命令。
在一种实现方式中,主机连接有DPU,主机获得该块协议命令之后,向DPU发送该块协议命令,该块协议命令用于指示DPU执行该数据访问命令。
示例性地,主机将该块协议命令发送给DPU,DPU从该块协议命令中解析出双向指示信息、第一内存地址和第二内存地址。DPU基于该双向指示信息,从第一内存地址指向的第一内存区域中获取该数据访问命令。DPU执行该数据访问命令,获得执行结果。DPU向主机反馈该执行结果。
可选地,DPU连接有存储设备,存储设备上建立有数据系统,在DPU缓存有该数据访问命令所要访问的数据的情况下,从DPU的缓存中获取该数据访问命令所要访问的数据,以得到执行结果。在DPU未缓存该数据访问命令所要访问的数据的情况下,DPU根据该数据访问命令获得一个块协议命令,例如,DPU将该数据访问命令转换为一个块协议命令,向存储设备发送所获得的块协议命令。其中,DPU向存储设备发送的块协议命令用于指示存储设备获得并执行该数据访问命令,并向DPU返回执行结果。具体实现方式请参照图4实施例中步骤406中DPU获得执行结果的相关介绍,这里不再赘述。
在本申请实施例中,DPU获得执行结果后,DPU基于双向指示信息,将执行结果写入第二内存地址指向的第二内存区域。DPU向主机返回第一响应,以指示主机从第二内存区域中获取执行结果。主机接收到第一响应后,从第二内存地址指向的第二内存区域中获得该数据访问命令的执行结果。具体实现方式可参照图4实施例中步骤407和步骤708的相关介绍,这里不再赘述。
在本申请实施例中,主机能够获得并输出块协议命令,通过块协议命令中的双向指示信息来指示双向数据传输,从而实现主机对数据访问命令的相关操作的卸载,减轻主机的计算压力,提升数据访问速率。
图10是本申请实施例提供的一种数据处理装置1000的结构示意图,该数据处理装置1000可以由软件、硬件或者两者的结合实现成为电子设备的部分或者全部,该电子设备可以为前述实施例所介绍的DPU。在本申请实施例中,该装置1000用于连接主机的DPU。参见图10,该装置1000包括:接收模块1001、解析模块1002、执行模块1003和反馈模块1004。
接收模块1001,用于接收主机发送的第一数据访问命令,第一数据访问命令遵从块协议;
解析模块1002,用于解析第一数据访问命令,获得第二数据访问命令,第二数据访问命令遵从非块协议;
执行模块1003,用于执行第二数据访问命令,获得执行结果;
反馈模块1004,用于向主机反馈执行结果。
可选地,解析模块1002用于:
从第一数据访问命令中解析出第一内存地址和第二内存地址;
从第一内存地址指向的第一内存区域中获取第二数据访问命令;
反馈模块用于:
将执行结果写入第二内存地址指向的第二内存区域;
向主机返回第一响应,以指示主机从第二内存区域中获取执行结果。
可选地,解析模块1002包括:
解析子模块,用于从第一数据访问命令中解析出双向指示信息、第一内存地址和第二内存地址,双向指示信息用于指示主机与DPU之间的双向数据传输;
第一数据传输子模块,用于基于双向指示信息,从第一内存地址指向的第一内存区域中获取第二数据访问命令;
反馈模块1004包括:
第二数据传输子模块,用于基于双向指示信息,将执行结果写入第二内存地址指向的第二内存区域;
响应子模块,用于向主机返回第一响应,以指示主机从第二内存区域中获取执行结果。
可选地,第一数据访问命令包括数据传输字段,数据传输字段包括双向指示信息。
可选地,第一数据访问命令为读命令和写命令的组合命令,双向指示信息包括写命令中的写指示信息和读命令中的读指示信息,写指示信息用于指示主机到DPU的数据传输,读指示信息用于指示DPU到主机的数据传输。
可选地,DPU连接存储设备,存储设备上建立有数据系统,主机具有数据系统的应用,第二数据访问命令为数据系统的应用发起的命令,第二数据访问命令用于访问数据系统中的数据。
可选地,执行模块1003,包括:
第一执行子模块,用于在DPU缓存有第二数据访问命令所要访问的数据的情况下,从DPU的缓存中获取第二数据访问命令所要访问的数据,以得到执行结果;
第二执行子模块,用于在DPU未缓存第二数据访问命令所要访问的数据的情况下,将第二数据访问命令转换为第三数据访问命令,向存储设备发送第三数据访问命令,以指示存储设备获得并执行第二数据访问命令,并向DPU返回执行结果,第三数据访问命令遵从块协议。
可选地,数据系统包括文件系统、媒体数据系统、数据库系统或备份系统。
可选地,块协议包括下述协议中的至少一种:NVMe协议、SCSI协议。
在本申请实施例中,主机能够将遵从非块协议的命令转换为遵从块协议的命令,从而由DPU执行非块协议的命令。这样,在后端存储建立数据系统的情况下,主机就能够将数据系统的相关操作卸载到DPU,由DPU处理数据系统的应用发起的数据访问命令,从而减轻主机的计算压力,提高数据访问性能。
需要说明的是:上述实施例提供的数据处理装置在进行数据处理时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据处理装置与数据处理方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图11是本申请实施例提供的一种数据处理装置1100的结构示意图,该数据处理装置1100可以由软件、硬件或者两者的结合实现成为电子设备的部分或者全部,该电子设备可以为前述实施例中所介绍的主机。在本申请实施例中,该装置1100用于主机,该主机连接有DPU参见图11,该装置1100包括:处理模块1101和输出模块1102。
处理模块1101,用于获得块协议命令,该块协议命令中包括双向指示信息、第一内存地址和第二内存地址,该双向指示信息用于指示双向数据传输,第一内存地址用于存储待执行的数据访问命令,第二内存地址用于存储该数据访问命令的执行结果;
输出模块1102,用于输出该块协议命令。
可选地,该数据访问命令包括非块协议命令。
可选地,该装置1100还包括:
获取模块,用于获取数据系统的应用发起的数据访问命令;
写模块,用于将该数据访问命令写入第一内存地址指向的第一内存区域;
读模块,用于从第二内存地址指向的第二内存区域中获得该数据访问命令的执行结果。
可选地,输出模块1102包括:
发送子模块,用于向DPU发送该块协议命令,该块协议命令用于指示DPU执行该数据访问命令。
可选地,块协议包括下述协议中的至少一种:NVMe协议、SCSI协议。
可选地,该数据访问命令用于访问数据系统,数据系统包括文件系统、媒体数据系统、数据库系统或备份系统。
在本申请实施例中,主机能够获得并输出块协议命令,通过块协议命令中的双向指示信息来指示双向数据传输,从而实现主机对数据访问命令的相关操作的卸载,减轻主机的计算压力,提升数据访问速率。
需要说明的是:上述实施例提供的数据处理装置在进行数据处理时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据处理装置与数据处理方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图12是本申请实施例提供的一种数据处理装置1200的结构示意图,该数据处理装置1200可以由软件、硬件或者两者的结合实现成为电子设备的部分或者全部,该电子设备可以为前述实施例中所介绍的主机。在本申请实施例中,该装置1200用于主机,该主机连接有DPU。参见图12,该装置1200包括:第一获取模块1201、转换模块1202、发送模块1203和第二获取模块1204。
第一获取模块1201,用于获取数据系统的应用发起的非块协议命令;
转换模块1202,用于将该非块协议命令转换为块协议命令;
发送模块1203,用于向DPU发送该块协议命令,以指示DPU获得并执行该非块协议命令;
第二获取模块1204,用于获取DPU反馈的执行结果。
可选地,转换模块1202包括:
生成子模块,用于基于该非块协议命令生成该块协议命令,该块协议命令携带双向指示信息、第一内存地址和第二内存地址,该双向指示信息用于指示主机与DPU之间的双向数据传输;
第一数据传输子模块,用于将该非块协议命令写入第一内存地址指向的第一内存区域;
第二获取模块1204包括:
接收子模块,用于接收DPU返回的第一响应;
第二数据传输子模块,用于从第二内存地址指向的第二内存区域中获取执行结果。
在本申请实施例中,主机能够将遵从非块协议的命令转换为遵从块协议的命令,从而由DPU执行非块协议的命令。这样,主机就能够将数据系统的相关操作卸载到DPU,由DPU处理数据系统的应用发起的数据访问命令,从而减轻主机的计算压力,提高数据访问性能。
需要说明的是:上述实施例提供的数据处理装置在进行数据处理时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据处理装置与数据处理方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意结合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络或其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如:同轴电缆、光纤、数据用户线(digital subscriber line,DSL))或无线(例如:红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质,或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如:软盘、硬盘、磁带)、光介质(例如:数字通用光盘(digital versatile disc,DVD))或半导体介质(例如:固态硬盘(solid state disk,SSD))等。值得注意的是,本申请实施例提到的计算机可读存储介质可以为非易失性存储介质,换句话说,可以是非瞬时性存储介质。
应当理解的是,本文提及的“至少一个”是指一个或多个,“多个”是指两个或两个以上。在本申请实施例的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,为了便于清楚描述本申请实施例的技术方案,在本申请的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
以上所述为本申请提供的实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (33)

1.一种数据处理方法,其特征在于,所述方法由连接主机的数据处理器DPU执行,所述方法包括:
接收所述主机发送的第一数据访问命令,所述第一数据访问命令遵从块协议;
解析所述第一数据访问命令,获得第二数据访问命令,所述第二数据访问命令遵从非块协议;
执行所述第二数据访问命令,获得执行结果;
向所述主机反馈所述执行结果。
2.如权利要求1所述的方法,其特征在于,所述解析所述第一数据访问命令,获得第二数据访问命令,包括:
从所述第一数据访问命令中解析出第一内存地址和第二内存地址;
从所述第一内存地址指向的第一内存区域中获取所述第二数据访问命令;
所述向所述主机反馈所述执行结果,包括:
将所述执行结果写入所述第二内存地址指向的第二内存区域;
向所述主机返回第一响应,以指示所述主机从所述第二内存区域中获取所述执行结果。
3.如权利要求1所述的方法,其特征在于,所述解析所述第一数据访问命令,获得第二数据访问命令,包括:
从所述第一数据访问命令中解析出双向指示信息、第一内存地址和第二内存地址,所述双向指示信息用于指示所述主机与所述DPU之间的双向数据传输;
基于所述双向指示信息,从所述第一内存地址指向的第一内存区域中获取所述第二数据访问命令;
所述向所述主机反馈所述执行结果,包括:
基于所述双向指示信息,将所述执行结果写入所述第二内存地址指向的第二内存区域;
向所述主机返回第一响应,以指示所述主机从所述第二内存区域中获取所述执行结果。
4.如权利要求3所述的方法,其特征在于,所述第一数据访问命令包括数据传输字段,所述数据传输字段包括所述双向指示信息。
5.如权利要求3所述的方法,其特征在于,所述第一数据访问命令为读命令和写命令的组合命令,所述双向指示信息包括所述写命令中的写指示信息和所述读命令中的读指示信息,所述写指示信息用于指示所述主机到所述DPU的数据传输,所述读指示信息用于指示所述DPU到所述主机的数据传输。
6.如权利要求1-5任一所述的方法,其特征在于,所述DPU连接存储设备,所述存储设备上建立有数据系统,所述主机具有所述数据系统的应用,所述第二数据访问命令为所述数据系统的应用发起的命令,所述第二数据访问命令用于访问所述数据系统中的数据。
7.如权利要求6所述的方法,其特征在于,所述执行所述第二数据访问命令,获得执行结果,包括:
在所述DPU缓存有所述第二数据访问命令所要访问的数据的情况下,从所述DPU的缓存中获取所述第二数据访问命令所要访问的数据,以得到所述执行结果;
在所述DPU未缓存所述第二数据访问命令所要访问的数据的情况下,根据所述第二数据访问命令获得第三数据访问命令,向所述存储设备发送所述第三数据访问命令,其中,所述第三数据访问命令用于指示所述存储设备获得并执行所述第二数据访问命令,并向所述DPU返回所述执行结果,所述第三数据访问命令遵从所述块协议。
8.如权利要求6或7所述的方法,其特征在于,所述数据系统包括文件系统、媒体数据系统、数据库系统或备份系统。
9.如权利要求1-8任一所述的方法,其特征在于,所述块协议包括下述协议中的至少一种:非易失性高速存储NVMe协议、小型计算机系统接口SCSI协议。
10.一种数据处理方法,其特征在于,所述方法由主机执行,所述方法包括:
获得块协议命令,所述块协议命令中包括双向指示信息、第一内存地址和第二内存地址,所述双向指示信息用于指示双向数据传输,所述第一内存地址用于存储待执行的数据访问命令,所述第二内存地址用于存储所述数据访问命令的执行结果;
输出所述块协议命令。
11.如权利要求10所述的方法,其特征在于,所述数据访问命令包括非块协议命令。
12.如权利要求10或11所述的方法,其特征在于,所述方法还包括:
获取数据系统的应用发起的所述数据访问命令;
将所述数据访问命令写入所述第一内存地址指向的第一内存区域;
从所述第二内存地址指向的第二内存区域中获得所述数据访问命令的执行结果。
13.如权利要求10-12任意一项所述的方法,其特征在于,所述输出所述块协议命令包括:
向数据处理器DPU发送所述块协议命令,所述块协议命令用于指示所述DPU执行所述数据访问命令。
14.如权利要求10-13任意一项所述的方法,其特征在于,所述块协议包括下述协议中的至少一种:非易失性高速存储NVMe协议、小型计算机系统接口SCSI协议。
15.如权利要求10-14任意一项所述的方法,其特征在于,所述数据访问命令用于访问数据系统,所述数据系统包括文件系统、媒体数据系统、数据库系统或备份系统。
16.一种数据处理装置,其特征在于,所述装置用于主机连接的数据处理器DPU,所述装置包括:
接收模块,用于接收所述主机发送的第一数据访问命令,所述第一数据访问命令遵从块协议;
解析模块,用于解析所述第一数据访问命令,获得第二数据访问命令,所述第二数据访问命令遵从非块协议;
执行模块,用于执行所述第二数据访问命令,获得执行结果;
反馈模块,用于向所述主机反馈所述执行结果。
17.如权利要求16所述的装置,其特征在于,所述解析模块用于:
从所述第一数据访问命令中解析出第一内存地址和第二内存地址;
从所述第一内存地址指向的第一内存区域中获取所述第二数据访问命令;
所述反馈模块用于:
将所述执行结果写入所述第二内存地址指向的第二内存区域;
向所述主机返回第一响应,以指示所述主机从所述第二内存区域中获取所述执行结果。
18.如权利要求16所述的装置,其特征在于,所述解析模块用于:
从所述第一数据访问命令中解析出双向指示信息、第一内存地址和第二内存地址,所述双向指示信息用于指示所述主机与所述DPU之间的双向数据传输;
基于所述双向指示信息,从所述第一内存地址指向的第一内存区域中获取所述第二数据访问命令;
所述反馈模块用于:
基于所述双向指示信息,将所述执行结果写入所述第二内存地址指向的第二内存区域;
向所述主机返回第一响应,以指示所述主机从所述第二内存区域中获取所述执行结果。
19.如权利要求16-18任意一项所述的装置,其特征在于,所述DPU连接存储设备,所述存储设备上建立有数据系统,所述主机具有所述数据系统的应用,所述第二数据访问命令为所述数据系统的应用发起的命令,所述第二数据访问命令用于访问所述数据系统中的数据。
20.如权利要求19所述的装置,其特征在于,所述执行模块用于:
在所述DPU缓存有所述第二数据访问命令所要访问的数据的情况下,从所述DPU的缓存中获取所述第二数据访问命令所要访问的数据,以得到所述执行结果;
在所述DPU未缓存所述第二数据访问命令所要访问的数据的情况下,根据所述第二数据访问命令获得第三数据访问命令,向所述存储设备发送所述第三数据访问命令,其中,所述第三数据访问命令用于指示所述存储设备获得并执行所述第二数据访问命令,并向所述DPU返回所述执行结果,所述第三数据访问命令遵从所述块协议。
21.如权利要求19或20所述的装置,其特征在于,所述数据系统包括文件系统、媒体数据系统、数据库系统或备份系统。
22.如权利要求16-21任意一项所述的装置,其特征在于,所述块协议包括下述协议中的至少一种:非易失性高速存储NVMe协议、小型计算机系统接口SCSI协议。
23.一种数据处理装置,其特征在于,所述装置包括:
处理模块,用于获得块协议命令,所述块协议命令中包括双向指示信息、第一内存地址和第二内存地址,所述双向指示信息用于指示双向数据传输,所述第一内存地址用于存储待执行的数据访问命令,所述第二内存地址用于存储所述数据访问命令的执行结果;
输出模块,用于输出所述块协议命令。
24.如权利要求23所述的装置,其特征在于,所述数据访问命令包括非块协议命令。
25.如权利要求23或24所述的装置,其特征在于,所述装置还包括:
获取模块,用于获取数据系统的应用发起的所述数据访问命令;
写模块,用于将所述数据访问命令写入所述第一内存地址指向的第一内存区域;
读模块,用于从所述第二内存地址指向的第二内存区域中获得所述数据访问命令的执行结果。
26.如权利要求23-25任意一项所述的装置,其特征在于,所述输出模块用于:
向数据处理器DPU发送所述块协议命令,所述块协议命令用于指示所述DPU执行所述数据访问命令。
27.如权利要求23-26任意一项所述的装置,其特征在于,所述块协议包括下述协议中的至少一种:非易失性高速存储NVMe协议、小型计算机系统接口SCSI协议。
28.如权利要求23-27任意一项所述的装置,其特征在于,所述数据访问命令用于访问数据系统,所述数据系统包括文件系统、媒体数据系统、数据库系统或备份系统。
29.一种数据处理系统,其特征在于,所述数据处理系统包括主机和与所述主机连接的数据处理器DPU;
所述DPU,用于实现权利要求1-9任一所述方法的步骤;
所述主机,用于实现权利要求10-15任一所述方法的步骤。
30.一种数据处理器DPU,其特征在于,包括:
通信接口,用于与主机通信;
处理器,连接所述通信接口,并用于执行计算机程序,实现权利要求1-9任一所述方法的步骤。
31.一种主机,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序,实现权利要求10-15任一所述方法的步骤。
32.一种计算机可读存储介质,其特征在于,所述存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-9任一所述的方法的步骤,或者,实现权利要求10-15任一所述方法的步骤。
33.一种计算机程序产品,其特征在于,所述计算机程序产品内存储有计算机指令,所述计算机指令被处理器执行时实现权利要求1-9任一所述的方法的步骤,或者,实现权利要求10-15任一所述方法的步骤。
CN202111605534.3A 2021-10-14 2021-12-25 数据处理方法、装置、系统、设备、存储介质及程序产品 Pending CN115982080A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/CN2022/092526 WO2023060891A1 (zh) 2021-10-14 2022-05-12 数据处理方法、装置、系统、设备、存储介质及程序产品

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202111196377 2021-10-14
CN2021111963775 2021-10-14

Publications (1)

Publication Number Publication Date
CN115982080A true CN115982080A (zh) 2023-04-18

Family

ID=85970673

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111605534.3A Pending CN115982080A (zh) 2021-10-14 2021-12-25 数据处理方法、装置、系统、设备、存储介质及程序产品

Country Status (2)

Country Link
CN (1) CN115982080A (zh)
WO (1) WO2023060891A1 (zh)

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103595720B (zh) * 2013-11-15 2017-07-07 华为技术有限公司 卸载数据传输方法、装置和客户端
CN117348976A (zh) * 2017-07-10 2024-01-05 微软技术许可有限责任公司 用于流处理的数据处理单元
CN110915172A (zh) * 2017-07-10 2020-03-24 芬基波尔有限责任公司 针对数据中心的接入节点
CN109298839A (zh) * 2018-10-26 2019-02-01 深圳大普微电子科技有限公司 基于pis的存储装置控制器、存储装置、系统及方法
US20210089236A1 (en) * 2020-12-04 2021-03-25 Intel Corporation Network device intermediary for memory access requests
US20210271517A1 (en) * 2021-05-19 2021-09-02 Intel Corporation Resource selection based in part on workload

Also Published As

Publication number Publication date
WO2023060891A1 (zh) 2023-04-20

Similar Documents

Publication Publication Date Title
KR102388893B1 (ko) 브리지 장치를 이용한 스토리지 인접 연산 제공 시스템 및 방법
CN107992436B (zh) 一种NVMe数据读写方法及NVMe设备
US20240330211A1 (en) Data processing method and apparatus
US20240311314A1 (en) Data Access Method and Computing Device
US9390036B2 (en) Processing data packets from a receive queue in a remote direct memory access device
US20240403455A1 (en) Data stream processing method, storage control node, and nonvolatile readable storage medium
CN107743137B (zh) 一种文件上传方法及装置
US11190620B2 (en) Methods and electronic devices for data transmission and reception
EP4439312A1 (en) Data storage method and system, storage access configuration method and related device
EP3972222B1 (en) Method, apparatus, electronic device, readable storage medium and program for adjusting instance number
WO2024037629A1 (zh) 区块链的数据整合方法、装置、计算机设备及存储介质
WO2024217333A1 (zh) 一种基于块存储的io访问方法、装置、电子设备及介质
CN116450554A (zh) 中断处理方法、根复合体设备及电子设备
EP4495794A1 (en) Method, apparatus and device for data shuffling, computer-readable storage medium and product
US20240356886A1 (en) Network Node Configuration Method and Apparatus, and Access Request Processing Method and Apparatus
WO2022222040A1 (zh) 图形处理器的缓存访问方法、图形处理器及电子设备
CN115982080A (zh) 数据处理方法、装置、系统、设备、存储介质及程序产品
EP4120060A1 (en) Method and apparatus of storing data,and method and apparatus of reading data
CN113051244B (zh) 数据访问方法和装置、数据获取方法和装置
CN113190237B (zh) 数据处理方法、系统和装置
CN115098030A (zh) 虚拟磁盘写入或读出数据的方法、装置及计算机设备
US12229118B2 (en) Method, apparatus and device for data shuffling, computer-readable storage medium and product
WO2024041140A1 (zh) 数据处理方法、加速器及计算设备
US20240296067A1 (en) Data processing method, apparatus, and computing device
US20250063107A1 (en) Method, device and computer program product for transmitting data block

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