数据访问方法、装置、服务器和计算机可读存储介质与流程
未命名
09-22
阅读:56
评论:0
1.本发明涉及存储技术领域,具体而言,涉及一种数据访问方法、装置、服务器和计算机可读存储介质。
背景技术:
2.当前的高性能计算、大数据分析、人工智能以及物联网等场景,在业务中越来越多的数据需要从网络中获取,对数据访问的时延要求越来越高,为了降低数据访问的时延,通常采用更高性能的cpu以期提高处理效率,降低数据访问的时延,由此导致成本增加,同时还需要消耗大量的设备内存。
技术实现要素:
3.本发明的目的在于提供了一种数据访问方法、装置、服务器和计算机可读存储介质,其能够无需采用更高性能的cpu即可降低数据访问的时延,同时也无需大量的服务器内存。
4.本发明的实施例可以这样实现:第一方面,本发明提供一种数据访问方法,应用于服务器,所述服务器与客户端通信连接,所述服务器包括rdma缓存层和ssd,所述方法包括:接收所述客户端发送的写请求,所述写请求包括待写数据的写入长度和待写地址;根据所述写入长度和所述待写地址,从所述rdma缓存层确定用于暂存所述待写数据的待写空间,并将所述待写空间的起始地址返回至所述客户端;通过rdma方式接收所述客户端基于接收到待写空间的起始地址发送的写请求报文,所述写请求报文包括所述待写数据,所述写请求报文中的目的地址为所述待写空间的起始地址;根据所述写请求报文中的目的地址,将所述待写数据暂存至所述待写空间,以根据所述待写地址将所述待写空间中写入的数据存储至所述ssd的闪存区。
5.在可选的实施方式中,所述ssd为多个,每一所述ssd还包括dram区,所述rdma缓存层的存储空间包括多个所述ssd的dram区,所述根据所述写入长度和所述待写地址,从所述rdma缓存层确定用于暂存所述待写数据的待写空间的步骤包括:根据所述待写地址确定所述待写数据需要写入的待写ssd;若所述待写ssd的dram区的可用空间的大小大于或者等于所述写入长度,则从所述待写ssd的dram区中确定所述待写空间。
6.在可选的实施方式中,所述服务器的dram网卡中存在自带dram区,所述rdma缓存层的存储空间还包括所述自带dram区,所述根据所述写入长度和所述待写地址,从所述rdma缓存层确定用于暂存所述待写数据的待写空间的步骤还包括:若所述待写ssd的dram区的可用空间的大小小于所述写入长度、且所述自带dram
区的可用空间的大小大于或者等于所述写入长度,则从所述自带dram区中确定所述待写空间。
7.在可选的实施方式中,所述根据所述写入长度和所述待写地址,从所述rdma缓存层确定用于暂存所述待写数据的待写空间的步骤还包括:若所述待写ssd的dram区的可用空间的大小小于所述写入长度、且所述自带dram区的可用空间的大小小于所述写入长度,且所述多个ssd中除所述待写ssd之外存在可用空间的大小大于或者等于所述写入长度的可用ssd,则从所述可用ssd的dram区中确定所述待写空间。
8.在可选的实施方式中,所述根据所述待写地址将所述待写空间中写入的数据存储至所述ssd的闪存区的步骤包括:将所述待写空间的起始地址作为源地址、将所述待写地址对应的物理地址作为目的地址,采用dma方式将所述待写空间中写入的数据存储至与所述待写地址对应的所述ssd的闪存区。
9.在可选的实施方式中,所述方法还包括:接收所述客户端发送的读请求,所述读请求包括待读数据的读取长度和表征所述待读数据存储位置的待读地址;根据所述读取长度和所述待读地址,从所述rdma缓存层确定用于暂存所述待读数据的待读空间;根据所述待读地址将读取的所述待读数据暂存至所述待读空间、并向所述客户端反馈读响应请求;接收所述客户端基于所述读响应请求发送的控制请求,所述控制请求包括所述客户端用于接收所述待读数据的接收地址;基于所述控制请求,通过rdma方式向所述客户端发送的读响应报文,所述读响应报文包括所述待读数据,所述读响应报文的目的地址为所述接收地址,所述读响应报文的源地址为所述待读空间的起始地址。
10.在可选的实施方式中,所述根据所述待读地址将读取的所述待读数据暂存至所述待读空间的步骤包括:将所述待读地址对应的物理地址作为源地址、将所述待读空间的起始地址作为目的地址,采用dma方式将读取的所述待读数据暂存至所述待读空间。
11.第二方面,本发明提供一种数据访问装置,应用于服务器,所述服务器与客户端通信连接,所述服务器包括rdma缓存层和ssd,所述装置包括:接收模块,用于接收所述客户端发送的写请求,所述写请求包括待写数据的写入长度和待写地址;确定模块,用于根据所述写入长度和所述待写地址,从所述rdma缓存层确定用于暂存所述待写数据的待写空间,并将所述待写空间的起始地址返回至所述客户端;写入模块,用于通过rdma方式接收所述客户端基于接收到待写空间的起始地址发送的写请求报文,所述写请求报文包括所述待写数据,所述写请求报文中的目的地址为所述待写空间的起始地址;所述写入模块,还用于根据所述写请求报文中的目的地址,将所述待写数据暂存
至所述待写空间,以根据所述待写地址将所述待写空间中写入的数据存储至所述ssd的闪存区。
12.第三方面,本发明提供一种服务器,包括处理器和存储器,所述存储器用于存储程序,所述处理器用于在执行所述程序时,实现前述实施方式中任一项所述的数据访问方法。
13.第四方面,本发明提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时,实现前述实施方式中任一项所述的数据访问方法。
14.本发明实施例在服务器中引入rdma缓存层,客户端需要向服务器写数据时,服务器首先从rdma缓存层确定用于暂存待写数据的待写空间,并将待写空间的起始地址返回客户端,客户端基于待写空间的起始地址利用rdma方式向服务器发送写请求报文、将待写空间的起始地址添加在写请求报文中,以将写请求报文中的待写数据暂存至待写空间中,服务器根据待写数据的待写地址再将待写空间中写入的数据存储至ssd的闪存区。由于写请求报文中的待写数据是通过rdma方式进行传输的,传输过程中无需cpu参与,且由于rdma缓存层的数据访问性能比较高,因此实现了无需采用更高性能的cpu、同时也无需大量的服务器内存即可降低数据访问的时延的技术效果。
附图说明
15.为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
16.图1为本发明实施例提供应用场景的示例图。
17.图2为本发明实施例提供的应用于图1应用场景的数据访问的示例图一。
18.图3为本发明实施例提供的应用于图1应用场景的数据访问的示例图二。
19.图4为本发明实施例提供的图3中rdma缓存层的示例图。
20.图5为本发明实施例提供的数据访问方法的流程示例图一。
21.图6为本发明实施例提供的数据访问方法的流程示例图二。
22.图7为本发明实施例提供的数据访问装置的方框示意图。
23.图8为本发明实施例提供的服务器的方框示意图。
24.图标:10-服务器;11-处理器;12-存储器;13-总线;20-客户端;100-数据访问装置;110-接收模块;120-确定模块;130-写入模块;140-读取模块。
具体实施方式
25.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
26.因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范
围。
27.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
28.在本发明的描述中,需要说明的是,若出现术语“上”、“下”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,或者是该发明产品使用时惯常摆放的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
29.此外,若出现术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
30.需要说明的是,在不冲突的情况下,本发明的实施例中的特征可以相互结合。
31.请参考图1,图1为本发明实施例提供应用场景的示例图,图1中,服务器10和客户端20通信连接,服务器10为存储服务的提供方,客户端20为存储服务的请求方,当客户端20需要存储数据时,客户端20向将数据发送至服务器10,服务器10将该数据进行存储,当客户端20需要读取存储的数据时,向服务器10发送读取请求,以读取存储至服务器10的数据。
32.服务器10包括、但不限于存储阵列、一台存储服务器、多台存储服务器组成的服务器集群、网络存储设备等。
33.客户端20包括、但不限于手机、平板电脑、笔记本电脑、可穿戴设备、主机等设备。
34.基于图1的应用场景,发明人对服务器10和客户端20之间的数据传输的过程进行了深入分析,请参照图2,图2为本发明实施例提供的应用于图1应用场景的数据访问的示例图一,图2中,客户端20包括用于持久存储数据的ssd盘、用于暂存数据的内存块,用于发送数据的rdma网卡,rdma网卡自带dma引擎。其中,ssd盘包括dma(direct memory access,直接内存访问)引擎和实际持久存储数据的闪存,通过dma引擎,可以将闪存中需要传输的数据拷贝到内存块中。rdma网卡是支持rdma(remote direct memory access,远程直接内存访问)的网络适配器,rdma技术允许网络中的两个节点(例如服务器10和客户端20)直接访问彼此的内存,而无需操作系统的中介。同样地,服务器10也包括自带dma引擎的rdma网卡、用于暂存数据的内存块、包括dma引擎及闪存的ssd盘。
35.客户端20利用本地的dma引擎将数据从闪存中读入内存,当需要存储数据时,先向服务器10发送写请求,服务器10根据写请求中的待写长度从内存块中准备用于暂存待写数据的空间,并将该空间的起始地址返回至客户端20,客户端20得到该起始地址后,客户端20的rdma网卡利用其dma引擎从本地的内存块中取出待写数据,组装成数据报文后发送至服务器10的rdma网卡,服务器10的rdma网卡将接收到的数据报文进行解包,利用其dma引擎将解包后得到的待写数据暂存至预先准备好的本地内存块中,再利用ssd的dma引擎将暂存至内存块中的数据存储至本地的闪存中。
36.由图2可以看出,服务器10在接收到待写数据后,需要cpu参与两次转换,先是数据从客户端20到服务器10中的本地内存块,后是从服务器10的本地内存块到服务器10的闪存,由于整个过程需要服务器10的cpu的参与,增加了对cpu的依赖,如果要提高数据处理效率,必须对cpu的配置进行升级,而配置升级势必造成成本的增加,此外,为了保证数据存储效率,需要锁定大量的大页内存,影响了其他业务使用内存。
37.有鉴于此,本实施例提供一种数据访问方法、装置、服务器和计算机可读存储介
质,通过在服务器10中引入rdma缓存层,用rdma方式实现服务器10和客户端20之间的数据访问,数据访问过程无需服务器10的cpu干预,有效减小了服务器10的cpu负载,降低了服务器10的cpu的性能要求,降低了服务器10的成本,同时,无需锁定大量的大页内存,避免了对其他业务使用内存的影响。下面将对其进行详细描述。
38.请参照图3,图3为本发明实施例提供的应用于图1应用场景的数据访问的示例图二,该数据访问的示例图是发明人对图2中存在的问题进行分析后提供的改进后的示例,图3中,服务器10中的rdma网卡自带dram,此外,服务器10的ssd盘也带有dram区,rdma缓存层统一管理rdma网卡的自带dram和ssd的dram区,ssd的dram区是一种用于提升ssd性能的技术,dram区的访问性能较高,通过加入dram区,可以提高数据处理速度、降低访问延迟。
39.在写数据时,服务器10从rdma缓存层确定暂存待写数据的空间,并向客户端20返回该空间的起始地址,客户端20发送的数据包以rdma技术直接写入服务器10预先准备的rdma缓存层中的空间,再利用dma技术将rdma缓存层中写入的数据存储至ssd盘的闪存中。由于客户端20发来的数据无需存储至服务器10的本地内存,而是暂存于rdma缓存层,无需服务器10的cpu的干预即可实现,同时也不影响其他业务使用内存,此外,数据通过dma方式从rdma缓存层存储至本地闪存中,以dma方式传输数据也无需cpu的干预,在提高传输效率的同时,进一步减轻了服务器10的cpu负载。
40.为了更清楚的说明rdma缓存层,本实施例还提供了rdma缓存层的示例图,请参照图4,图4为本发明实施例提供的图3中rdma缓存层的示例图,图4中,rdma缓存层统一管理了rdma网卡的自带dram和服务器10上ssd a、ssd b和ssd c的dram,为了保证数据访问效率,以写数据为例,一种较优的实现方式为,首先从待写数据需要写入的ssd盘的dram中获取需要暂存待写数据的空间,由此,待写数据暂存后,可以在同一个ssd盘内以dma方式实现数据的存储,存储效率更高。若待写数据需要写入的ssd盘的dram中不存在足够的空间,则从rdma网卡的自带dram中获取需要暂存待写数据的空间,由此,可以在不影响其他ssd盘的数据存储的基础上,实现数据的存储,若上述两种情况均不满足,则尝试从其他ssd盘的dram中获取暂存待写数据的空间,由此,实现ssd盘的dram资源的充分利用。
41.基于图3的数据访问的示例图和图4的rdma缓存层的示例图,本实施例还提供了一种应用于服务器10的数据访问方法,请参照图5,图5为本发明实施例提供的数据访问方法的流程示例图,该方法包括以下步骤:步骤s101,接收客户端发送的写请求,写请求包括待写数据的写入长度和待写地址。
42.在本实施例中,待写地址可以为客户端20运行的应用程序能够看到的逻辑地址,并非实际存储待写数据的地址,事实上,客户端20无需关心待写数据存储的物理地址,即ssd盘中的物理地址,只有提供存储服务的服务器才需要根据待写地址确定实际要存储待写数据的ssd盘中的物理地址。
43.步骤s102,根据写入长度和待写地址,从rdma缓存层确定用于暂存待写数据的待写空间,并将待写空间的起始地址返回至客户端。
44.在本实施例中,可以理解的是,待写空间的大小可以大于或者等于写入长度,以便待写数据能够正常暂存至待写空间。rdma缓存层可以包括dram网卡中的自带dram区和ssd盘的dram区中至少一个,待写空间可以是自带dram区中的区域,也可以是ssd盘的dram区中
的区域。
45.步骤s103,通过rdma方式接收客户端基于接收到待写空间的起始地址发送的写请求报文,写请求报文包括待写数据,写请求报文中的目的地址为待写空间的起始地址。
46.在本实施例中,客户端20接收到待写空间的起始地址后,客户端20以rdma方式发送写请求报文,写请求报文中的源地址为待写数据在客户端20中的内存中的地址,目的地址为待写空间的起始地址。
47.步骤s104,根据写请求报文中的目的地址,将待写数据暂存至待写空间,以根据待写地址将待写空间中写入的数据存储至ssd的闪存区。
48.在本实施例中,在待写数据暂存至待写空间后,若对数据一致性要求极高的场景,可以将待写空间中写入的数据存储至ssd的闪存区之后再向客户端20返回写入成功的响应消息,若对数据一致性要求一般的场景,可以在待写数据暂存至待写空间后立即向客户端20返回写入成功的响应消息。
49.本实施例提供的上述方法,通过引入rdma缓存层,通过rdma方式进行数据传输,传输过程中无需cpu参与,且由于rdma缓存层的数据访问性能比较高,因此实现了无需采用更高性能的cpu、也无需大量的服务器内存即可降低数据访问的时延的技术效果,同时也避免了影响其他业务使用内存。
50.在可选的实施方式中,当ssd为多个,多个ssd的dram区由rdma缓存层统一管理,为了使从rdma缓存层中获取的待写空间更合适,以进一步提高数据写入效率,本实施例还提供了一种确定待写空间的实现方式:根据待写地址确定待写数据需要写入的待写ssd;若待写ssd的dram区的可用空间的大小大于或者等于写入长度,则从待写ssd的dram区中确定待写空间。
51.本实施例中,由于优先从待写数据需要写入的待写ssd的dram区中获取待写空间,待写数据能够在待写ssd盘内部快速地从待写空间存储至待写ssd的闪存。例如,服务器10有3个ssd:ssd1~ssd3,根据待写地址确定待写数据需要写入ssd2,则优先从ssd2的dram区中获取待写空间。
52.在可选的实施方式中,在待写ssd的dram区的可用空间不够时,为了不影响其他ssd的数据存储,本实施例还提供了此情况下确定待写空间的实现方式:若待写ssd的dram区的可用空间的大小小于写入长度、且自带dram区的可用空间的大小大于或者等于写入长度,则从自带dram区中确定待写空间。
53.在本实施例中,自带dram区可以是rdma网卡中的全部dram区,也可以是从rdma网卡中dram区中专门划分出来的专用区域。
54.在可选的实施方式中,若待写ssd的dram区不够、且自带dram区也不够,为了充分利用ssd的dram区,本实施例还提供了一种此场景下确定待写空间的实现方式:若待写ssd的dram区的可用空间的大小小于写入长度、且自带dram区的可用空间的大小小于写入长度,且多个ssd中除待写ssd之外存在可用空间的大小大于或者等于写入长度的可用ssd,则从可用ssd的dram区中确定待写空间。
55.在本实施例中,若可用ssd为多个,则可以从多个可用ssd的dram区中确定待写空间的方式可以是随机选择一个可用ssd,也可以是从中选择一个dram区的可用空间最大的
可用ssd,或者是选择一个ssd当前访问负载最小的可用ssd等。
56.本实施例提供的上述方法,通过对ssd的dram区统一管理,实现了ssd的dram区的资源共享,有效地节省了服务器10的成本。
57.在可选的实施方式中,为了提高待写空间中的数据存储至ssd的闪存区的存储效率,同时进一步减少cpu的负载,本实施例提供了一种实现方式:将待写空间的起始地址作为源地址、将待写地址对应的物理地址作为目的地址,采用dma方式将待写空间中写入的数据存储至与待写地址对应的ssd的闪存区。
58.本实施例提供的上述方法,通过dma方式将待写空间中写入的数据存储至与待写地址对应的ssd的闪存区,由于dma方式无需服务器10的cpu的干预,可以进一步减小了服务器10的cpu负载,同时,由于数据无需经过内存,直接在两个dram区域中传输,减少了io的处理步骤,进一步提高了性能。
59.在可选的实施方式中,为了能够快速地从服务器10读取存储的数据,本实施例还提了一种读数据的处理方式,请参照图6,图6为本发明实施例提供的数据访问方法的流程示例图二,该方法包括以下步骤:步骤s110,接收客户端发送的读请求,读请求包括待读数据的读取长度和表征待读数据存储位置的待读地址。
60.在本实施例中,待读地址与待写地址一样,也为客户端20运行的应用程序能够看到的逻辑地址,并非实际存储待写数据的地址。
61.步骤s111,根据读取长度和待读地址,从rdma缓存层确定用于暂存待读数据的待读空间。
62.在本实施例中,也可以按照与本实施例记载的确定待写空间的一样的方式确定待读空间,以使从rdma缓存层获取的待读空间更合适,以进一步提高数据读取效率,例如,根据待读地址确定存储待读数据的待读ssd;若待读ssd的dram区的可用空间的大小大于或者等于写入长度,则从待读ssd的dram区中确定待读空间,其他场景下与确定待写空间的方式一样,此处不再赘述。
63.步骤s112,根据待读地址将读取的待读数据暂存至待读空间、并向客户端反馈读响应请求。
64.步骤s113,接收客户端基于读响应请求发送的控制请求,控制请求包括客户端用于接收待读数据的接收地址。
65.步骤s114,基于控制请求,通过rdma方式向客户端发送的读响应报文,读响应报文包括待读数据,读响应报文的目的地址为接收地址,读响应报文的源地址为待读空间的起始地址。
66.在本实施例中,服务器10通过rdma方式发送读响应报文的方式与客户端20通过rdma方式发送写请求报文的方式类似,此处不再赘述。
67.在可选的实施方式中,为了使待读数据快速地暂存至待读空间,本实施例还提供了一种实现方式:将待读地址对应的物理地址作为源地址、将待读空间的起始地址作为目的地址,采用dma方式将读取的待读数据暂存至待读空间。
68.在本实施例中,待读地址对应的物理地址为待读数据在ssd中的实际存储的地址,
通过dma方式将ssd中的待读数据暂存至待读空间,由于dma方式无需服务器10的cpu的干预,可以进一步减小了服务器10的cpu负载,同时,由于数据无需经过内存,直接在两个dram区域中传输,减少了io的处理步骤,进一步提高了性能。
69.还需要说明的是,上述数据访问方法都是站在服务器10这一侧进行的描述,事实上,基于上述记载的内容,本领域技术人员可以在不付出创造性劳动的情况下,参照本实施例中对服务器10的改进及应用于服务器10的数据访问方法,对客户端20进行类似改进,例如,为客户端20增加rdma缓存层,rdma缓存层统一管理客户端20上各ssd的dram,以实现对应的提高访问效率、减少成本的技术效果。
70.为了执行上述实施例及各个可能的实施方式中的相应步骤,下面给出一种数据访问装置的实现方式。请参照图7,图7为本发明实施例提供的数据访问装置100的方框示意图。需要说明的是,本实施例所提供的数据访问装置100,其基本原理及产生的技术效果和上述实施例相同,为简要描述,本实施例部分未提及指出。
71.数据访问装置100包括接收模块110、确定模块120、写入模块130及读取模块140,数据访问装置100应用于服务器。
72.接收模块110,用于接收客户端发送的写请求,写请求包括待写数据的写入长度和待写地址;确定模块120,用于根据写入长度和待写地址,从rdma缓存层确定用于暂存待写数据的待写空间,并将待写空间的起始地址返回至客户端;写入模块130,用于通过rdma方式接收客户端基于接收到待写空间的起始地址发送的写请求报文,写请求报文包括待写数据,写请求报文中的目的地址为待写空间的起始地址;写入模块130,还用于根据写请求报文中的目的地址,将待写数据暂存至待写空间,以根据待写地址将待写空间中写入的数据存储至ssd的闪存区。
73.在可选的实施方式中, ssd为多个,每一ssd还包括dram区, rdma缓存层的存储空间包括多个ssd的dram区,确定模块120具体用于:根据待写地址确定待写数据需要写入的待写ssd;若待写ssd的dram区的可用空间的大小大于或者等于写入长度,则从待写ssd的dram区中确定待写空间。
74.在可选的实施方式中,服务器的dram网卡中存在自带dram区, rdma缓存层的存储空间还包括自带dram区,确定模块120还用于:若待写ssd的dram区的可用空间的大小小于写入长度、且自带dram区的可用空间的大小大于或者等于写入长度,则从自带dram区中确定待写空间。
75.在可选的实施方式中,确定模块120还用于:若待写ssd的dram区的可用空间的大小小于写入长度、且自带dram区的可用空间的大小小于写入长度,且多个ssd中除待写ssd之外存在可用空间的大小大于或者等于写入长度的可用ssd,则从可用ssd的dram区中确定待写空间。
76.在可选的实施方式中,写入模块130具体用于:将待写空间的起始地址作为源地址、将待写地址对应的物理地址作为目的地址,采用dma方式将待写空间中写入的数据存储至与待写地址对应的ssd的闪存区。
77.在可选的实施方式中,接收模块110还用于:接收客户端发送的读请求,读请求包
括待读数据的读取长度和表征待读数据存储位置的待读地址。
78.确定模块120还用于:根据读取长度和待读地址,从rdma缓存层确定用于暂存待读数据的待读空间。
79.读取模块140用于:根据待读地址将读取的待读数据暂存至待读空间、并向客户端反馈读响应请求;接收客户端基于读响应请求发送的控制请求,控制请求包括客户端用于接收待读数据的接收地址;基于控制请求,通过rdma方式向客户端发送的读响应报文,读响应报文包括待读数据,读响应报文的目的地址为接收地址,读响应报文的源地址为待读空间的起始地址。
80.在可选的实施方式中,读取模块140具体用于:将待读地址对应的物理地址作为源地址、将待读空间的起始地址作为目的地址,采用dma方式将读取的待读数据暂存至待读空间。
81.本实施例还提供了一种服务器10的方框示意图,请参照图8,图8为本发明实施例提供的服务器10的方框示意图,服务器10包括处理器11、存储器12、总线13。处理器11、存储器12通过总线13连接。
82.处理器11可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器11中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器11可以是通用处理器,包括中央处理器(central processing unit,简称cpu)、网络处理器(network processor,简称np)等;还可以是数字信号处理器(dsp)、专用集成电路(asic)、现成可编程门阵列(fpga)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
83.存储器12用于存储程序,例如图7中的数据访问装置100,数据访问装置100均包括至少一个可以软件或固件(firmware)的形式存储于存储器12中的软件功能模块,处理器11在接收到执行指令后,执行程序以实现本发明实施例中的数据访问方法。
84.存储器12可能包括高速随机存取存储器(ram:random access memory),也可能还包括非易失存储器(non-volatile memory)。可选地,存储器12可以是内置于处理器11中的存储装置,也可以是独立于处理器11的存储装置。
85.总线13可以是isa总线、pci总线或eisa总线等。图8仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
86.本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时,实现前述实施方式中任一项的数据访问方法。
87.综上所述,本发明实施例提供了一种数据访问方法、装置、服务器和计算机可读存储介质,应用于服务器,服务器与客户端通信连接,服务器包括rdma缓存层和ssd,方法包括:接收客户端发送的写请求,写请求包括待写数据的写入长度和待写地址;根据写入长度和待写地址,从rdma缓存层确定用于暂存待写数据的待写空间,并将待写空间的起始地址返回至客户端;通过rdma方式接收客户端基于接收到待写空间的起始地址发送的写请求报文,写请求报文包括待写数据,写请求报文中的目的地址为待写空间的起始地址;根据写请求报文中的目的地址,将待写数据暂存至待写空间,以根据待写地址将待写空间中写入的数据存储至ssd的闪存区。与现有技术相比,本实施例至少具有以下优势:(1)通过引入rdma缓存层,通过rdma方式进行数据传输,传输过程中无需cpu参与,且由于rdma缓存层的数据
访问性能比较高,因此实现了无需采用更高性能的cpu、也无需大量的服务器内存即可降低数据访问的时延的技术效果,同时也避免了影响其他业务使用内存,使得客户端的应用可以访问远程服务器的持久存储而不消耗远程服务器中的任何cpu资源和内存资源。远程服务器的持久存储能够被读取而不需要远程服务器上的进程(或cpu内存)参与,天然避免服务器的cpu的缓存(cache)不会被访问的内存内容所填充;(2)优先采用与待写数据/待读数据同一个ssd的dram,使得数据在同一个ssd内部进行传输时传输效率高,提高了访问性能;(3)利用rdma网卡的自带dram,避免在ssd的dram不够时,仍然可以采用自带dram保证较高的访问性能;(4)通过rdma缓存层将多个ssd的dram和自带dram统一管理,充分利用了服务器中的dram,有效实现dram资源共享,节省了服务器成本。
88.以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
技术特征:
1.一种数据访问方法,其特征在于,应用于服务器,所述服务器与客户端通信连接,所述服务器包括rdma缓存层和ssd,所述方法包括:接收所述客户端发送的写请求,所述写请求包括待写数据的写入长度和待写地址;根据所述写入长度和所述待写地址,从所述rdma缓存层确定用于暂存所述待写数据的待写空间,并将所述待写空间的起始地址返回至所述客户端;通过rdma方式接收所述客户端基于接收到待写空间的起始地址发送的写请求报文,所述写请求报文包括所述待写数据,所述写请求报文中的目的地址为所述待写空间的起始地址;根据所述写请求报文中的目的地址,将所述待写数据暂存至所述待写空间,以根据所述待写地址将所述待写空间中写入的数据存储至所述ssd的闪存区。2.如权利要求1所述的数据访问方法,其特征在于,所述ssd为多个,每一所述ssd还包括dram区,所述rdma缓存层的存储空间包括多个所述ssd的dram区,所述根据所述写入长度和所述待写地址,从所述rdma缓存层确定用于暂存所述待写数据的待写空间的步骤包括:根据所述待写地址确定所述待写数据需要写入的待写ssd;若所述待写ssd的dram区的可用空间的大小大于或者等于所述写入长度,则从所述待写ssd的dram区中确定所述待写空间。3.如权利要求2所述的数据访问方法,其特征在于,所述服务器的dram网卡中存在自带dram区,所述rdma缓存层的存储空间还包括所述自带dram区,所述根据所述写入长度和所述待写地址,从所述rdma缓存层确定用于暂存所述待写数据的待写空间的步骤还包括:若所述待写ssd的dram区的可用空间的大小小于所述写入长度、且所述自带dram区的可用空间的大小大于或者等于所述写入长度,则从所述自带dram区中确定所述待写空间。4.如权利要求3所述的数据访问方法,其特征在于,所述根据所述写入长度和所述待写地址,从所述rdma缓存层确定用于暂存所述待写数据的待写空间的步骤还包括:若所述待写ssd的dram区的可用空间的大小小于所述写入长度、且所述自带dram区的可用空间的大小小于所述写入长度,且多个所述ssd中除所述待写ssd之外存在可用空间的大小大于或者等于所述写入长度的可用ssd,则从所述可用ssd的dram区中确定所述待写空间。5.如权利要求3所述的数据访问方法,其特征在于,所述根据所述待写地址将所述待写空间中写入的数据存储至所述ssd的闪存区的步骤包括:将所述待写空间的起始地址作为源地址、将所述待写地址对应的物理地址作为目的地址,采用dma方式将所述待写空间中写入的数据存储至与所述待写地址对应的所述ssd的闪存区。6.如权利要求1所述的数据访问方法,其特征在于,所述方法还包括:接收所述客户端发送的读请求,所述读请求包括待读数据的读取长度和表征所述待读数据存储位置的待读地址;根据所述读取长度和所述待读地址,从所述rdma缓存层确定用于暂存所述待读数据的待读空间;根据所述待读地址将读取的所述待读数据暂存至所述待读空间、并向所述客户端反馈读响应请求;
接收所述客户端基于所述读响应请求发送的控制请求,所述控制请求包括所述客户端用于接收所述待读数据的接收地址;基于所述控制请求,通过rdma方式向所述客户端发送的读响应报文,所述读响应报文包括所述待读数据,所述读响应报文的目的地址为所述接收地址,所述读响应报文的源地址为所述待读空间的起始地址。7.如权利要求6所述的数据访问方法,其特征在于,所述根据所述待读地址将读取的所述待读数据暂存至所述待读空间的步骤包括:将所述待读地址对应的物理地址作为源地址、将所述待读空间的起始地址作为目的地址,采用dma方式将读取的所述待读数据暂存至所述待读空间。8.一种数据访问装置,其特征在于,应用于服务器,所述服务器与客户端通信连接,所述服务器包括rdma缓存层和ssd,所述装置包括:接收模块,用于接收所述客户端发送的写请求,所述写请求包括待写数据的写入长度和待写地址;确定模块,用于根据所述写入长度和所述待写地址,从所述rdma缓存层确定用于暂存所述待写数据的待写空间,并将所述待写空间的起始地址返回至所述客户端;写入模块,用于通过rdma方式接收所述客户端基于接收到待写空间的起始地址发送的写请求报文,所述写请求报文包括所述待写数据,所述写请求报文中的目的地址为所述待写空间的起始地址;所述写入模块,还用于根据所述写请求报文中的目的地址,将所述待写数据暂存至所述待写空间,以根据所述待写地址将所述待写空间中写入的数据存储至所述ssd的闪存区。9.一种服务器,其特征在于,包括处理器和存储器,所述存储器用于存储程序,所述处理器用于在执行所述程序时,实现权利要求1-7中任一项所述的数据访问方法。10.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,该计算机程序被处理器执行时,实现权利要求1-7中任一项所述的数据访问方法。
技术总结
本发明涉及存储技术领域,提供了一种数据访问方法、装置、服务器和计算机可读存储介质,方法包括:接收客户端发送的写请求,写请求包括待写数据的写入长度和待写地址;根据写入长度和待写地址,从RDMA缓存层确定用于暂存待写数据的待写空间,并将待写空间的起始地址返回至客户端;通过RDMA方式接收客户端基于接收到待写空间的起始地址发送的写请求报文,写请求报文包括待写数据,写请求报文中的目的地址为待写空间的起始地址;根据写请求报文中的目的地址,将待写数据暂存至待写空间,以根据待写地址将待写空间中写入的数据存储至SSD的闪存区。本发明能够无需采用更高性能的CPU即可降低数据访问的时延。低数据访问的时延。低数据访问的时延。
技术研发人员:钟辉
受保护的技术使用者:成都泛联智存科技有限公司
技术研发日:2023.08.22
技术公布日:2023/9/20
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
航空商城 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/