一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种数据存储方法、装置及网络设备与流程

2022-08-17 06:31:22 来源:中国专利 TAG:


1.本发明涉及存储技术领域,尤其涉及一种数据存储方法、装置及网络设备。


背景技术:

2.随着近年来大数据、云计算以及人工智能等计算机信息技术的快速发展,全球互联网数据规模呈指数级增长,众多高并发、低时延应用对高性能硬件的需求催生了高性能存储器的出现。对于高性能存储器而言,由于其i/o吞吐能力强大,分布式文件系统需要分配较多的计算资源以完成数据处理与数据交换,从而导致系统的传输时延增加,限制了网络传输能力和系统性能。为了解决这个问题,远程直接内存访问(remote direct memory access,rdma)应运而生,rdma是一种直接进行远程内存存取的技术,即可以直接将数据从一个系统快速迁移到另一个远程系统存储器中,而不对操作系统造成任何影响,减少了中央处理器(central processing unit,cpu)参与数据传输过程的消耗,解放了内存带宽,进而提升了系统处理业务的性能,具有高带宽、低时延及低cpu占用率的特点。
3.目前使用rdma在读写数据时,主机的网络设备首先通过rdma操作将数据写入到存储设备的内存,存储设备中的cpu需要将内存中的数据再存储至持久性的存储介质,例如固态硬盘(solid state disk,ssd)中。而通过cpu将内存中的数据存储至持久性的存储介质需要消耗cpu资源,从而影响主机与存储设备之间的通信。
4.因此,如何实现由主机的网络设备直接将数据存储至持久性的存储介质,减少对存储设备的cpu占用是目前亟待解决的问题。


技术实现要素:

5.本发明实施例公开了一种数据存储方法、装置及网络设备,能够直接将数据进行持久化存储,减少对存储设备的cpu占用。
6.为实现上述目的,本技术第一方面提供一种数据存储装置,包括网络设备和固态硬盘ssd,所述网络设备用于:为接收的第一写入请求中的待写数据分配缓存所述待写数据的缓存空间,将所述待写数据写入所述缓存空间;指示所述ssd将存储在所述缓存空间的待写数据写入所述ssd;所述ssd用于根据所述网络设备的指示将所述待写数据由所述缓存空间写入所述ssd。
7.在本技术提供的方案中,所述网络设备例如为网卡。网卡在接收到写请求之后,直接指示ssd从缓存空间中搬移待写数据并写入ssd,可以避免存储装置的cpu参与,减少对存储装置的cpu占用。另外,通过由存储装置侧确定缓存待写数据的缓存空间,从而由存储装置管理存储侧的缓存空间,而不是由发送写请求的装置管理存储侧的缓存空间,提高了安全性和可靠性。
8.在本技术第一方面的一种可能的实现方式中,所述缓存空间为数据存储装置的内存中的内存空间。
9.在本技术第一方面的一种可能的实现方式中,所述缓存空间为所述ssd中的缓存
空间,例如控制器缓存(controller memory buffer,cmb)中的存储空间。所述cmb为所述ssd的片上空间,通过使用ssd片上空间作为所述缓存空间,可以减少对内存的使用,从而可节省内存成本,并提升了带宽性能。
10.在本技术第一方面的一种可能的实现方式中,所述网络设备在用于指示所述ssd将存储在所述缓存空间的待写数据写入所述ssd时,具体用于:在所述数据存储装置的预设存储空间中写入所述缓存空间的信息,并通知所述ssd,所述预设存储空间为所述数据存储装置的内存中的内存空间或者所述ssd中的存储空间;所述ssd还用于在从所述预设存储空间中读取所述缓存空间的信息,根据所述缓存空间的信息从所述缓存空间读取所述待写数据,并将所述待写数据写入所述ssd。所述预设存储空间例如为所述ssd与所述数据存储装置建立连接时生成的提交队列(submission queue,sq)。
11.网卡通过将缓存空间的信息存储至预设的存储空间中,使得ssd可从该预设存储空间读取缓存空间的信息,从而根据缓存空间的信息从缓存空间读取待写数据并对该待写数据进行持久化存储,从而可避免存储装置的cpu参与,减少对存储装置cpu的占用。
12.在本技术第一方面的一种可能的实现方式中,所述网络设备在通知所述ssd时,具体用于通过门铃(doorbell)通知所述ssd。网卡通过门铃通知ssd,可以避免存储装置的cpu参与,减少对存储装置的cpu占用。
13.在本技术第一方面的一种可能的实现方式中,所述方法还包括:所述ssd在将所述待写数据写入所述ssd之后,所述ssd向所述网卡提供数据写完成消息。
14.在本技术第一方面的一种可能的实现方式中,所述ssd向所述网卡提供数据写完成消息包括,所述ssd在所述网卡的发送队列sendq中写入所述数据写完成消息。
15.ssd通过直接向网卡提供数据写完成消息,可以避免存储装置的cpu参与,减少对存储装置的cpu占用。
16.本技术第二方面提供一种数据存储方法,包括:存储节点的网络设备接收第一写入请求;所述网络设备为接收的第一写入请求中的待写数据分配缓存所述待写数据的缓存空间,将所述待写数据写入所述缓存空间;所述网络设备指示所述存储节点的固态硬盘ssd将存储在所述缓存空间的待写数据写入所述ssd。
17.在本技术第二方面的一种可能的实现方式中,所述缓存空间为所述存储节点的内存中的内存空间。
18.在本技术第二方面的一种可能的实现方式中,所述缓存空间为所述ssd中的缓存空间。
19.在本技术第二方面的一种可能的实现方式中,所述网络设备指示所述ssd将存储在所述缓存空间的待写数据写入所述ssd具体包括,所述网络设备在所述存储节点的预设存储空间中写入所述缓存空间的信息,并通知所述ssd,所述预设存储空间为所述存储节点的内存中的内存空间或者所述ssd中的存储空间。
20.在本技术第二方面的一种可能的实现方式中,所述预设存储空间为所述ssd与所述存储节点建立连接时生成的提交队列sq。
21.在本技术第二方面的一种可能的实现方式中,所述网络设备通知所述ssd具体包括,所述网络设备通过门铃doorbell通知所述ssd。
22.本技术第三方面提供一种网络设备,包括:接收单元,用于接收第一写入请求;分
配单元,用于为接收的第一写入请求中的待写数据分配缓存所述待写数据的缓存空间,将所述待写数据写入所述缓存空间;指示单元,用于指示所述存储节点的固态硬盘ssd将存储在所述缓存空间的待写数据写入所述ssd。
23.在本技术第三方面的一种可能的实现方式中,所述指示单元具体用于,在所述存储节点的预设存储空间中写入所述缓存空间的信息,并通知所述ssd,所述预设存储空间为所述存储节点的内存中的内存空间或者所述ssd中的存储空间。
24.在本技术第三方面的一种可能的实现方式中,所述预设存储空间为所述ssd与所述存储节点建立连接时生成的提交队列sq。
25.在本技术第三方面的一种可能的实现方式中,所述指示单元具体用于,通过门铃doorbell通知所述ssd。
26.本技术第四方面提供一种网络设备,所述网络设备包括存储器和处理器,所述处理器执行所述存储器中存储的计算机指令,使得所述处理器执行如本技术第二方面所述的方法。
27.本技术第五方面提供了一种计算机存储介质,所述计算机存储介质存储有计算机程序,当所述计算机程序被处理器执行时,可以实现上述第二方面以及结合上述第二方面中的任意一种实现方式所提供的数据存储方法的流程。
28.本技术第六提供了一种计算机程序产品,该计算机程序包括指令,当该计算机程序被计算机执行时,使得计算机可以执行上述第二方面以及结合上述第二方面中的任意一种实现方式所提供的数据访问方法的流程。
附图说明
29.为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
30.通过结合附图描述本技术实施例,可以使得本技术实施例更加清楚:
31.图1为本技术实施例提供的一种数据写入固态硬盘的示意图;
32.图2为本技术实施例提供的一种系统架构的示意图;
33.图3为本技术实施例提供的一种数据处理方法流程图;
34.图4为本技术实施例提供的通过rdma连接写数据的过程示意图;
35.图5为本技术实施例提供的一种数据写入方法的流程图;
36.图6为本技术实施例提供的一种数据读取方法的流程图;
37.图7为本技术实施例提供的一种网络设备的架构图;
38.图8为本技术实施例所应用的云服务系统的架构图。
具体实施方式
39.下面将结合附图,对本技术实施例中的技术方案进行描述。
40.首先,结合附图对本技术中所涉及的部分用语和相关技术进行解释说明,以便于本领域技术人员理解。
41.主机又可以称为客户端,具体可以包括物理机、虚拟机、容器等,用于产生或消费
数据,例如应用服务器、分布式文件系统服务器等。
42.主机的网络设备(例如网卡)为主机用于数据通信的设备,具体可以包括网络接口控制器(networkinterface controller,nic)、rdma网络接口控制器(rdma-aware network interface controller,rnic)等。
43.存储设备又可以称为服务端,具体可以包括外置集中式存储或分布式存储等形态的能够存储数据的设备,例如存储服务器、分布式数据库服务器等。
44.固态存储(ssd)的提交队列(submission queue,sq)和门铃(doorbell,db):在存储设备中,存储设备的cpu和ssd通过预定协议通信,在存储设备启动时的初始化阶段,存储设备的cpu会通过所述预定协议在所述存储设备的内存中为所述ssd建立提交队列(submission queue,sq)和完成队列(completion queue,cq),在ssd中创建门铃。其中,所述预定协议例如为非易失性内存主机控制器接口(non-volatile memory express,nvme)协议。cpu把发送给ssd的命令存储在sq中,并将所述命令在所述sq的位置写在所述门铃中,并通过所述ssd从所述sq中获取命令执行,当所述ssd执行完一个命令后,将执行完成命令的信息存储在cq中,cpu通过读取cq中的执行完成命令的信息,即可确定命令被执行完成。
45.rdma通信协议是一种用于进行rdma操作的计算设备所遵循的一套协议规范,目前有三种支持rdma的通信协议,分别是无限带宽(infiniband,ib)协议、以太网(rdma over converged ethernet,roce)协议、因特网广域(internet wide area rdma protocal,iwarp)协议,这三种协议都可以使用同一套api来使用,但它们有着不同的物理层和链路层。在主机设备与存储设备之间通过rdma进行通信时,会在主机的网卡中创建发送队列(send queue,sendq),相应地会在存储设备的网卡中创建与该发送队列相对应的接收队列(receive queue,rq),发送队列和接收队列形成队列对(queue pair,qp),将所述队列的地址映射给应用的虚拟地址,应用即可直接通过所述qp将数据传输至所述存储设备的网卡中,或者可以将数据存储于存储设备的内存中。其中sendq和rq都是环形队列,其每个元素用于存储一个工作请求(work request,wr)。所述环形队列中包括预定数目的连续排列的元素,每个元素包括预定大小的存储地址,该环形队列通过头指针和尾指针指示环形队列中的待读取元素和可写入元素,其中环形队列中从尾指针指向的元素到头指针指向的元素之间的元素为可写入元素(包括尾指针指向的元素,不包括头指针指向的元素),从头指针指向的元素到尾指针指向的元素之间的元素为待读取元素(包括头指针指向的元素,不包括尾指针指向的元素)。在环形队列初始未写入数据时,所述尾指针指向该环形队列的第一个元素,以指示该元素为当前可写入的第一个地址,并且在环形队列每写入一个元素时,尾指针下移一个元素。当初始第一个可写入的元素被写入之后,头指针指向该元素,以指示该元素为当前第一个待读的元素,当在环形队列中每读取一个元素时,头指针下移一个元素。当该环形队列全部写满时,如果所述第一个元素之前写入的数据已经被读取,则尾指针再次指向所述第一个元素。如此可循环使用环形队列进行数据的写入和读取。
46.目前在主机通过rdma传输数据的时候,会首先将数据传输至存储设备的内存中,然后通过存储设备的cpu将数据从内存搬移至ssd。如图1所示,其示出了一种数据写入场景示意图,主机110中的网络设备1110首先通过rdma操作将数据写入到存储设备120的网络设备(即rnic1240中),然后rnic1240将数据写入到内存1220中,通过cpu1210中的rnic驱动1211通知存储软件1212所述数据到内存的写入,之后,根据存储软件1212的指示,cpu1210
通过ssd驱动1213指示ssd1230将数据从内存1220搬移至ssd1230中进行持久化存储,ssd1230在完成对数据持久化存储之后,通过中断的方式告知cpu1210,cpu1210通过rnic驱动1211通知rnic1240所述数据到ssd的存储,从而rnic1240向主机110返回写完成通知消息。
47.由于在对数据进行持久化存储时,需要cpu(包括rnic驱动、存储软件和ssd驱动)的参与才能完成整个存储过程,这样将消耗大量cpu资源。
48.基于上述,本技术提供了一种数据存储方法,在通过rdma的方式将数据存储至存储设备的内存后,由存储设备的网卡指示ssd将数据从内存搬移至ssd进行持久化存储,而无需存储设备的cpu参与,从而减少对存储设备的cpu占用。
49.本技术实施例的技术方案可以应用于任何需要远程访问持久性存储介质的系统中,尤其对存在带宽瓶颈的场景,例如,人工智能(artificial intelligence,ai)训练系统、视频监控系统、超算系统等。例如,视频监控系统需要记录大量的视频数据,需要频繁的进行数据访问和交换,用户在使用视频监控系统进行数据访问时,视频监控系统中可使用本技术实施例提供的数据访问方法,以解决数据在进行读写时存在的带宽瓶颈,提高数据读写效率。
50.图2为本技术实施例提供的一种系统架构的示意图。如图2所示,该系统200包括:应用服务器210和存储服务器220,应用服务器210通过rdma网络与存储服务器220进行连接,应用服务器210包括cpu211和内存212,并连接有rnic213;存储服务器220包括cpu221和内存222,并连接有rnic223和持久化存储介质,这里以ssd224为例进行说明,应理解,持久化存储介质包括但不限于ssd224。与上文cpu和ssd通过nvme协议通信类似地,在应用服务器210和存储服务器220建立rdma连接时,存储服务器220中可创建与应用服务器210对应的提交队列sq和门铃db。在数据写入时,应用服务器210通过cpu211产生数据并将产生的数据存储至内存212中,然后rnic213通过例如send操作向存储服务器220的rnic223发送写请求。rnic223在接收到写请求之后,确定内存中写入待写数据的地址,将待写数据写入所述确定的地址,并根据ssd224的sq地址和db地址通知ssd224中的控制器将内存222中的数据搬移至ssd224中进行持久化存储。
51.在本技术实施例中,rnic213和rnic223可以是通用的rnic,也可以为通过专用集成电路(application specific integrated circuit,asic)、现场可编辑逻辑门阵列(field programmable gate array,fpga)等硬件实现的智能nic或网络设备,所述ssd224的控制器可以通过部署于存储服务器220中的asic、fpga等硬件加速设备实现。所述应用服务器210和存储服务器220包括物理机、虚拟机、容器等形态,可以部署在云环境上的一个或多个计算设备(例如中心服务器),或者边缘环境中的一个或多个计算设备(例如服务器)上。
52.可以看出,图2所示的数据访问系统与图1所示的数据访问系统相比,应用服务器通过rdma操作将数据写入到存储服务器的内存之后,不再依赖存储服务器中的cpu和存储软件对数据进行处理从而将数据写入到ssd中,而是直接绕过存储服务器的cpu根据ssd的sq地址和db地址通知ssd,以使得ssd将内存中数据搬移至ssd进行持久化存储,这样可以减少对存储服务器的cpu占用。
53.结合图2所示的系统架构的示意图,下面将结合图2描述本技术实施例提供的数据
处理方法。首先对数据处理之前的连接建立和设置过程进行描述,如图3所示,该流程包括:
54.s301:应用服务器210和存储服务器220建立rdma连接。
55.可选的,应用服务器210和存储服务器220可以是基于ib、roce或iwarp任一个协议建立rdma连接。可以理解,应用服务器210和存储服务器220可以基于其它协议建立rdma连接。
56.具体地,应用服务器210和存储服务器220将需要进行数据通信的内存地址(可以是连续的虚拟内存或者连续的物理内存空间)进行注册,提供给网络设备作为虚拟的连续缓冲区,缓冲区使用虚拟地址,为了便于理解和叙述,本技术实施例中以网络设备为rnic为例进行说明,在后续描述中不再做进一步区分。图4为应用服务器210在与存储服务器220建立rdma连接之后写数据的过程示意图。例如,如图4所示,存储服务器220将内存222中的内存块注册给rnic223。应理解,在注册时,应用服务器210和存储服务器220的操作系统会检查被注册块的许可,注册进程将需要被注册的内存的虚拟地址与物理地址的映射表写入rnic。注册后内存注册进程锁定了内存页,为了防止内存页被替换出去,注册进程需要同时保持物理和虚拟内存的映射。
57.进一步的,应用服务器210和存储服务器220在建立rdma连接的过程中将会协商创建qp,在创建qp时将会创建关联的发送队列sendq和接收队列rq,在创建完成之后,应用服务器210和存储服务器220可以利用qp进行通信。如图4中所示,rnic213的sendq与rnic223的rq对应,从rnic213的sendq发出的对存储服务器220的访问请求在由rnic223接收之后存放到rnic223的rq队列中,类似地,rnic223的sendq与rnic213的rq对应。存储服务器220在确定注册给rnic223的内存块之后,还可以将该内存块地址与上述sendq队列地址关联地提供给ssd224,ssd224在接收到该地址信息之后,将该内存块地址与sendq队列地址对应地存储,以进行对该内存块的读写。
58.在步骤s302,存储服务器220在内存中为ssd创建与该rdma连接对应的sq,在ssd中创建db。
59.为了由存储服务器220的rnic223直接指示ssd224进行对ssd224的数据访问,在建立rdma连接之后,可创建与该rdma连接对应的ssd224的sq和db,以用于进行对ssd224的指示,也即建立ssd224与存储服务器220的连接。具体是,如图4所示,存储服务器220可在内存中创建与rnic223中的sendq和rq对应的sq。另外,ssd224可以在内部互联总线内存空间中创建与rq和sq对应的db,所述内部互联总线例如为外设组件互连标准总线(peripheral component interconnect express,pcie),下文中以pcie内存空间为例进行描述。
60.在步骤s303,存储服务器220分别在rnic223和ssd224中设置rdma连接与sq、db的对应关系。
61.存储服务器220在内存中创建sq之后,将sq地址分别发送给rnic223和ssd224,从而,rnic223可设置rq与sq地址的对应关系,ssd224可设置sq地址与sendq地址的对应关系。ssd224在创建db之后,设置db与sq地址的对应关系,并将db地址发送给rnic223,从而,rnic223可设置rq与db地址之间的对应关系。
62.在如上所述设置各个对应关系之后,rnic213可通过rdma的标准操作向rnic223发送对ssd224的访问请求。所述访问请求例如包括对ssd224的写请求、读请求等等,所述标准操作例如包括rdma send操作、rdma receive操作、rdma write操作、rdma read操作等操
作。例如,rnic213可通过rdma send操作发送对ssd224的写请求,参考图4中标注

的箭头。rnic223在通过rq接收到该写请求之后,为该写请求的待写数据分配所述内存块中的地址,并如图4中标注

的箭头所示在该分配的地址中写入待写数据。之后,rnic223可根据rq与sq地址的对应关系如图4中标注

的箭头所示在sq中写入该写请求的待写数据的相关信息,并根据rq与db地址之间的对应关系如图4中标注

的箭头所示对db进行写入。在写入db之后,ssd224中可以以硬件或软件的形式如图4中标注

的箭头所示通知ssd224的控制器所述db的写入,ssd224的控制器根据db与sq地址的对应关系,如图4中标注

的箭头所示在sq中读取写请求的相关信息,根据该相关信息确定内存中写入待写数据的地址,之后如图4中标注

的箭头所示从内存中读取该待写数据,并将该待写数据写入ssd224中。ssd224在完成所述写入之后,可根据sq地址与sendq地址的对应关系,如图4中标注

的箭头所示在sendq中写入写请求完成消息,从而rnic223如图4中标注

的箭头所示将该写请求完成消息返回给应用服务器210。对于通过由其它操作发送的对ssd224的其它访问请求,在存储服务器220中,类似地,rnic223可通过在sq中写入访问请求的相关信息,并写入db地址通知ssd224读取sq,从而控制ssd224进行对ssd224的访问。
63.其中,所述注册的内存块可以视为环形缓冲区,与环形队列类似地,该环形缓冲区包括预定大小的连续地址,通过头指针和尾指针指示环形缓冲区中的待读取地址和可写入地址,其中环形缓冲区中从尾指针指向的地址到头指针指向的地址之间的地址为可写入地址(包括尾指针指向的地址,不包括头指针指向的地址),从头指针指向的地址到尾指针指向的地址之间的地址为待读取地址(包括头指针指向的地址,不包括尾指针指向的地址),所述头指针在内存块中的数据被读取之后更新,所述尾指针在内存块中被写入之后更新。例如,在上述写数据的过程中,rnic223可在每次向内存块写入数据之后根据写入数据的长度更新尾指针,ssd224可在每次从内存块读取数据之后根据读取数据的长度更新头指针,从而可循环使用该内存块缓存各个写请求的待写数据。
64.可以理解,参考图3和图4描述的上述过程仅仅是示例性的,而不用于限制本技术实施例的范围。例如,在本技术一种可能的实现方式中,可以将ssd224中的控制器缓存(controller memory buffer,cmb)中的一块空间注册给rnic223,不需要在内存中注册内存块。通过以ssd224的cmb空间作为rnic223的缓存空间,从而不需要对内存进行操作,从而可节省内存成本,并提升带宽性能。
65.在本技术另一种可能的实现方式中,在rnic223中可通过一对qp队列(即rq和sendq)进行与多个应用服务器的rdma连接,在该情况中,存储服务器220只需要初始创建一对qp队列,不需要每次建立rdma连接时都创建qp队列,相应地,只需要初始创建与所述qp队列对应的ssd的sq和db,而不需要创建多个sq,从而可实现对各个应用服务器的连接的汇聚,降低对盘内队列的需求。
66.下文中将对应用服务器到存储服务器的数据写流程和数据读流程进行详细描述。
67.图5为本技术实施例提供的一种数据写入方法的流程图。
68.参考图5,首先,在步骤s501,应用服务器210的rnic213通过rdma send操作向存储服务器220的rnic223发送写请求。
69.当应用服务器210中的应用需要向存储服务器220中写入数据时,应用服务器210可将待写的数据存储到注册给rnic213的内存块中,并指示rnic213向rnic223发送写请求。
rnic213根据所述指示从内存块中获取待写数据,生成写请求。在生成该写请求之后,rnic213可将该写请求作为wr放入到rnic213的sendq中,从而如图4中的标注

的箭头所示发送给rnic223。rnic213可以通过rdma send操作或者rdma write操作发送该写请求,这两个操作不同在于,rdma write操作对应的写请求中包括存储服务器220中的虚拟或物理的内存地址,以指示rnic223直接将数据写入到写请求中的内存地址中,而rdma send操作对应的写请求中不包括虚拟或物理的内存地址,从而,需要由rnic223确定用于缓存待写数据的内存地址。相对于采用rdma write操作的写方案,采用rdma send操作的数据写入方案在存储服务器侧管理内存空间,而不是在应用服务器侧管理,不暴露存储服务器侧的内存空间(可信域)给应用服务器侧,防止了安全性的风险,具有较高的可靠性。下文中将以rdma send操作的数据写入方案为例进行描述。
70.在一种实施方式中,所述写请求中包括该写请求的操作接口(例如send操作接口)、写命令、待写数据、待写数据长度和db信息,所述db信息例如为预设数据。
71.在另一种实施方式中,存储服务器220可向应用服务器210提供与所述ssd中的一段存储空间对应的逻辑存储空间,该逻辑存储空间例如为持久化日志空间(persistence log,plog)。所述plog通过plog的唯一标识plog id来标识,plog上的存储数据采用追加写的形式进行存储,即,对于已经存储的数据不进行覆盖修改,而是将该修改追加存储到新的地址中。例如,应用服务器210可向存储服务器220申请对具有预定大小(例如2m)的plog i进行写入,存储服务器220在接收到该申请之后,从所述ssd中分配与该plog i对应的一段物理地址,以用于对请求写入plog i的数据进行存储。在该情况中,所述写请求中除了包括操作接口、写命令、待写数据、待写数据长度和db信息之外,还可以包括待写的plog地址,例如“plog i,地址2”。
72.在步骤s502,存储服务器220的rnic223在接收到写请求之后在内存222中分配缓存待写数据的地址1。
73.rnic223在接收到写请求之后,可首先将该写请求放入rnic223的与所述rnic213的sendq对应的rq中以等待处理。rnic223在从rq队列中获取该写请求之后,可根据待写数据的长度为该写请求1分配所述注册的内存块中的地址,以用于缓存该待写数据。在一种实施方式中,rnic223可根据内存块的尾指针和头指针在从尾指针指示的地址开始的未使用空间中为该待写数据分配地址(例如地址1),该地址1例如包括起始地址和长度。在进行该分配之后,rnic223更新内存块的尾指针,以用于对下一个写请求分配地址。
74.在步骤s503,存储服务器220的rnic223在地址1缓存待写数据。
75.rnic223在确定用于内存中写入(即缓存)待写数据的地址1之后,如图4中标注箭头

的箭头所示将待写数据写入地址1中,以用于缓存该待写数据,从而等待ssd224搬移该数据。
76.在步骤s504,存储服务器220的rnic223指示ssd224从地址1搬移待写数据。
77.rnic223为了指示ssd224,可根据预先存储的rq与sq地址的对应关系,找到内存中的与rq对应的sq,并如图4中标注

的箭头所示将待写数据的信息存储到该sq中。之后,rnic223根据预先存储的rq与db地址的对应关系找到ssd224的pcie内存空间中的db,并如图4中标注

的箭头所示将db信息写入到db中。当rnic223在db中写入db信息之后,在ssd224中可通过硬件或软件的形式向ssd224的控制器发送通知,以指示该db被写入信息,
从而ssd224的控制器如图4中标注

的箭头所示读取db信息,根据预先存储的db地址与sq地址的对应关系,找到内存中的sq,并根据db信息确定sq中新写入信息的位置,如图4中标注

的箭头所示从该位置读取到待写数据的信息。可以理解,rnic223向ssd224提供待写数据的信息的方式不限于上述方式,而可以包括任何已知的方式。
78.在一种实施方式中,rnic223存储到sq中的待写数据的信息包括写命令和根据预定映射规则对上述地址1进行映射所获取的信息等,从而ssd224在读取到待写数据的信息之后可根据所述预定映射规则确定内存中存储待写数据的地址1。
79.在另一种实施方式中,rnic223存储到sq中的待写数据的信息可包括上述确定的地址1和写命令等。
80.在另一种实施方式中,rnic223存储到sq中的待写数据的信息可包括上述确定的地址1、写命令和对应于ssd中的存储空间的plog地址等。
81.在一种实施方式中,rnic223存储到db中的信息可以为预设的任意数据,以指示ssd224有新的信息写入到sq中,ssd224可根据db与sq地址的对应关系找到该sq。该sq为环形队列,环形队列的具体描述可参考上文对sendq和rq的描述,在此不再赘述。在该实施例中,由rnic223在每次向sq写入信息之后更新sq的尾指针,由ssd224在每次从sq读取信息之后更新sq的头指针。为了使得ssd224也可以确定最新写入信息的位置,rnic223可在内存预定位置中存储该尾指针对应的位置,从而ssd224可在接收到db信息之后,在内存中读取到sq的尾指针,并在sq中的尾指针的前一个位置读取到待写数据的信息。
82.在另一种实施方式中,rnic223在将待写数据的信息写入到sq之后,可将尾指针作为db信息写入到db中,从而ssd224在读取到该db信息之后,基于该db信息读取到sq中的待写数据的信息。在一种实施方式中,rnic223在将待写数据的信息写入到sq之后,可将待写数据的信息在sq中的位置写入到db中。
83.在步骤s505,存储服务器220的ssd224根据rnic223的指示将待写数据从地址1搬移至ssd224。
84.ssd224在读取到待写数据的信息之后,可根据待写数据的信息确定内存中写入待写数据的地址1,从而如图4中的标注

的箭头所示,将待写数据从地址1搬移至ssd224进行存储,即从地址1读取所述待写数据,将所述待写数据存储到ssd224中,更新所述内存块的头指针,在ssd224中记录所述待写数据对应的ssd224中的地址。
85.在一种实施方式中,rnic223存储到sq中的待写数据的信息包括写命令和根据预定映射规则对上述地址1进行映射所获取的信息等,从而ssd224在读取到待写数据的信息之后可根据所述预定映射规则确定内存中存储待写数据的地址1,并从地址1读取该待写数据。
86.在一种实施方式中,rnic223存储到sq中的待写数据的信息可包括上述确定的地址1和写命令等,从而rnic223可直接从sq读取到内存块中存储待写数据的地址,并从地址1读取该待写数据1。
87.在另一种实施方式中,rnic223存储到sq中的待写数据的信息可包括上述确定的地址1的相关信息、写命令和对应于ssd中的存储空间的plog地址(例如plog i,地址2)等。rnic223在从地址1读取待写数据之后,可根据预先记录的plog i与ssd中存储空间的对应关系,确定ssd中与该plog地址对应的地址(例如地址3),并在ssd中的地址3中存储该待写
数据。在进行该存储之后,ssd可记录该写入的数据与其plog地址的对应关系,以用于读取该数据。
88.在步骤s506,ssd224在将待写数据从地址1搬移至ssd224之后,向rnic223提供数据写完成消息。
89.ssd224在将待写数据从地址1存储到ssd224,也即完成了上述写请求,ssd224可通过已知的各种方式通知rnic223所述写请求的数据写完成消息。
90.在一种实施方式中,如图4中标注

的箭头所示,ssd224可通过直接内存访问(direct memory access,dma)将数据写完成消息作为wr写入rnic223的sendq中以等待发送给应用服务器210。其中,所述rnic223之前写入sq中的待写数据的信息例如包括写请求的编号,从而ssd224在完成该数据写入之后,可在写入到sendq中的数据写完成消息中包括写请求编号,从而可标识该数据写完成消息对应的写请求。
91.在步骤s507,存储服务器220的rnic223向应用服务器210的rnic213返回数据写完成消息。
92.在ssd224将数据写完成消息写入到rnic223的sendq中之后,rnic223顺序发送sendq中的各个元素,从而将该数据写完成消息发送给应用服务器210的rnic213中的rq。rnic213在读取rq中的该数据写完成消息之后,将该数据写完成消息通知给应用,从而应用确定写请求的数据写入成功。
93.可以看出,在将待写入数据写入到ssd224的整个过程中,都不需要存储服务器220的软件和cpu参与,仅仅只需要ssd224和存储服务器220的内存222相配合就可以完成数据写入流程,减小了对存储服务器的cpu占用,此外,普通的rnic即可以支持该方案,有效扩展了应用场景,降低了应用成本。
94.图6为本技术实施例提供的一种数据读取方法的流程图。
95.参考图6,在步骤s601,应用服务器210的rnic213向存储服务器220的rnic223发送数据读请求。该读请求例如通过rdma send操作发送,并且该读请求中包括读命令、待读数据的标识(或者待读数据在ssd224中的地址)、应用服务器210中将用于存储待读数据的内存地址(或者cmb地址)、以及db信息。在一种实施方式中,所述待读数据对应于plog i,从而所述待读数据的标识包括plog i的标识和plog i中对应该待读数据的地址,例如“plog i,地址2”,如上文所述,该plog地址与ssd中的存储空间相对应。
96.在步骤s602,rnic223向ssd224提供待读数据的信息,以指示ssd224读取并缓存数据。
97.与上文类似地,rnic223可通过sq和db向ssd224提供待读数据的信息。在一种实施方式中,所述待读数据的信息例如包括读请求中的读命令、待读数据的标识(或者待读数据在ssd224中的地址)、和应用服务器210中将用于存储待读数据的内存地址。可以理解,rnic223向ssd224提供待读数据的信息的方式不限于上述方式,而可以包括任何已知的方式。
98.具体是,rnic223可将待读数据的信息存储到对应的sq中,并将读请求中的db信息写入到对应的db中。当rnic223在db中写入db信息之后,在ssd224中可通过硬件或软件的形式向ssd224的控制器发送通知,以指示该db被写入信息,从而ssd224的控制器读取db信息,根据db信息确定sq中新写入信息的位置,从该位置读取到待读数据的信息。
99.在步骤s603,ssd224根据待读数据的信息读取数据并缓存至内存中。
100.ssd224在从sq读取待读数据的信息之后,可基于该信息确定ssd224中存储待读数据的地址,并读取该数据。如果待读数据的信息中为待读数据的标识,例如“plog i,地址2”,ssd224可基于ssd224中记录的plog i与ssd224中的存储空间的对应关系,确定待读数据存储在ssd224中的地址3中,并从地址3读取该数据。ssd224在读取该数据之后,将该数据缓存到所述内存块中。
101.在步骤s604,ssd224向rnic223提供读取的数据的缓存信息。
102.在一种实施方式中,ssd224可生成用于将读取的数据写入到应用服务器210的写请求,该写请求中包括写命令、读取的数据在存储服务器220中的缓存地址和应用服务器210中将存储该读取数据的内存地址,并且该写请求可调用rdmawrite操作接口。之后,ssd224通过dma方式将该写请求作为一个wr写入到rnic223的sendq中,以等待通过rdma write操作发送给应用服务器。可以理解,ssd224向rnic223提供读取数据的缓存信息的方式不限于上述方式,而可以包括任何已知的方式。
103.在步骤s605,rnic223向rnic213返回读取的数据。
104.在ssd224将上述写请求写入到rnic223的sendq中之后,rnic223根据写请求中的存储服务器220侧的读取的数据的缓存地址获取该读取的数据置入写请求中,并将写请求发送给rnic213。rnic213在接收到该写请求之后,将读取的数据存入读请求中的应用服务器210侧的内存地址中。
105.在发送该写请求之后,rnic223还可以通过rdma send操作向rnic213发送数据返回消息,以指示应用从内存中获取与所述读请求对应的数据。
106.可以看出,在将数据从ssd224读取到应用服务器210的内存212的过程中,同样不需要软件和cpu参与,仅依赖于ssd224和存储服务器220的内存222配合即可完成数据读流程,这样减小了对存储服务器220的cpu占用,且有效的扩展了适用场景,降低了应用成本。
107.需要说明的是,图6所示的方法实施例与图5所示的方法实施例基于同一思想,在具体实现过程中可以相互参照,为了简洁,在此不再赘述。
108.图7为本技术实施例提供的一种网络设备的架构图,所述网络设备用于执行图5所示的方法,所述网络设备包括:
109.接收单元71,用于接收第一写入请求;
110.分配单元72,用于为接收的第一写入请求中的待写数据分配缓存所述待写数据的缓存空间,将所述待写数据写入所述缓存空间;
111.指示单元73,用于指示所述存储节点的固态硬盘ssd将存储在所述缓存空间的待写数据写入所述ssd。
112.在一种可能的实现方式中,所述指示单元73具体用于,在所述存储节点的预设存储空间中写入所述缓存空间的信息,并通知所述ssd,所述预设存储空间为所述存储节点的内存中的内存空间或者所述ssd中的存储空间。
113.在一种可能的实现方式中,所述预设存储空间为所述ssd与所述存储节点建立连接时生成的提交队列sq。
114.在一种可能的实现方式中,所述指示单元具体用于,通过门铃doorbell通知所述ssd。
115.本技术实施例提供一种网络设备,所述网络设备包括存储器和处理器,所述处理器执行所述存储器中存储的计算机指令,使得所述处理器执行如本技术图5和图6所示的方法。
116.可以理解,上文所述应用服务器和存储服务器可以为物理服务器,也可以为云服务器(如虚拟服务器)。图8为根据本技术实施例的云服务系统800的示意图。参见图8,所述系统800包括:计算设备801和存储设备802。所述计算设备801包括硬件层8016和运行在硬件层8016之上的虚拟机监控器(vmm)8011,以及多个虚拟机(vmi)8012。任一所述虚拟机8012可以作为云服务系统800的一个虚拟的计算节点或应用服务器。所述存储设备802与计算设备801类似地包括硬件层和运行在硬件层之上的虚拟机监控器(vmm),以及多个虚拟机(vmj),任一所述虚拟机可以作为云服务系统800的一个虚拟的存储节点或存储服务器。下文将详细描述计算设备801的组成作为示例。
117.具体的,虚拟机8012是通过虚拟机软件在公共硬件资源上模拟出的虚拟的计算机(服务器),虚拟机上可以安装操作系统和应用程序,虚拟机还可访问网络资源。对于在虚拟机中运行的应用程序而言,虚拟机就像是在真正的计算机中进行工作。
118.硬件层8016是虚拟化环境运行的硬件平台,可以由一个或多个物理主机的硬件资源抽象得到的。其中,硬件层可包括多种硬件,例如,硬件层8016包括处理器8014(例如cpu)和存储器8015,还可以包括网卡(即nic)8013、高速/低速输入/输出(i/o,input/output)设备,及具有特定处理功能的其它设备。其中,存储器8015可以为易失性存储器(volatile memory),例如随机存取存储器(random-access memory,ram)、动态随机存取存储器(dynamic random-access memory,dram);所述存储器8015也可以为非易失性存储器(non-volatile memory),例如只读存储器(read-only memory,rom),快闪存储器(flash memory),硬盘(hard disk drive,hdd)、固态硬盘(solid-state drive,ssd)、存储级内存(storage class memory,scm)等;所述存储器8015还可以包括上述种类的存储器的组合。虚拟机8012基于vmm8011,以及硬件层8016提供的硬件资源,运行可执行程序,以实现上述实施例中如图3-图6所示的方法。为了简洁,在此不再赘述。
119.需要理解,本文中的“第一”,“第二”等描述,仅仅为了描述的简单而对相似概念进行区分,并不具有其他限定作用。
120.本领域的技术人员可以清楚地了解到,本技术提供的各实施例的描述可以相互参照,为描述的方便和简洁,例如关于本技术实施例提供的各装置、设备的功能以及执行的步骤可以参照本技术方法实施例的相关描述,各方法实施例之间、各装置实施例之间也可以互相参照。
121.本领域技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的全部或部分步骤。
122.在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质
中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。
123.在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,在没有超过本技术的范围内,可以通过其他的方式实现。例如,以上所描述的实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
124.另外,所描述装置和方法以及不同实施例的示意图,在不超出本技术的范围内,可以与其它系统,模块,技术或方法结合或集成。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电子、机械或其它的形式。
125.以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应所述以权利要求的保护范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献