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

用于将数据远程传送到存储器的系统、方法和装置与流程

2023-02-19 03:05:02 来源:中国专利 TAG:

用于将数据远程传送到存储器的系统、方法和装置
1.相关申请的交叉引用
2.本技术要求获得于2021年8月6日提交的序列号为63/230,687的美国临时专利申请的优先权及其权益,该申请通过引用而并入。
技术领域
3.本公开一般涉及数据传送,更具体地,涉及用于将数据远程传送到存储器的系统、方法和装置。


背景技术:

4.客户端可以向服务器发送请求,以从可由服务器控制的一个或多个存储资源读取数据。服务器可以向一个或多个存储资源发送命令,以检索数据。一个或多个存储资源可以将数据传送到服务器,并且服务器可以将数据传送到客户端。
5.本背景技术部分公开的上述信息仅用于加强对本发明的背景技术的理解,因此它可能包含不构成现有技术的信息。


技术实现要素:

6.一种方法可以包括:在目标处,从服务器接收命令、用于标识数据的信息和用于使用存储器访问协议执行数据传送的访问信息;以及,基于命令,基于访问信息,使用存储器访问协议在目标和客户端之间执行数据传送。用于标识数据的信息可以包括对象密钥,并且对象密钥和访问信息可以至少部分地被编码在编码对象密钥中。该方法还可以包括:基于数据传送,将完成(completion)从目标发送到服务器。该方法还可以包括:基于完成,将成功的指示从服务器发送到客户端。目标可以是第一目标,命令可以是第一命令,用于标识数据的信息可以是用于标识第一数据的第一信息,访问信息可以是第一访问信息,并且数据传送可以是第一数据传送,以及,该方法还可以包括:在目标处,从服务器接收第二命令、用于标识第二数据的第二信息和用于使用存储器访问协议执行第二数据传送的第二访问信息;基于用于标识第二数据的第二信息,获得第二数据;以及,基于第二命令,基于第二访问信息,使用存储器访问协议在目标和客户端之间执行第二数据传送。该方法还可以包括:基于第一数据传送,将第一完成(first completion)从目标发送到服务器;基于第二数据传送,将第二完成从目标发送到服务器;以及,基于第一完成和第二完成,将成功的指示从服务器发送到客户端。数据可以被配置用于错误纠正。数据可以是纠删码(erasure code)的。数据传送可以是第一数据传送,并且目标可以是一个或多个目标之一,以及,该方法还可以包括:确定第一数据传送的状态;以及,基于状态,使用存储器访问协议在客户端和一个或多个目标之一之间执行奇偶校验数据的第二数据传送。该方法还可以包括:基于奇偶校验数据,重构数据。可以在客户端处执行重构。该方法还可以包括:针对存储器访问协议,初始化在客户端和目标之间的连接。该方法还可以包括:将目标的配置信息从服务器发送到客户端,其中,连接可以基于配置信息。执行数据传送可以包括:将数据从目标传送到客
户端。执行数据传送可以包括:将数据从客户端传送到目标。该方法还可以包括:在目标处,接收用于访问由服务器控制的一个或多个资源的请求,其中,目标可以被配置为提供对一个或多个资源中的至少一个的访问。一个或多个资源可以包括存储资源或计算资源中的一个或多个。一个或多个资源可以包括密钥值存储。服务器可以包括对象存储服务器。
7.一种系统可以包括:目标,其被配置为使用第一网络路径接收命令,以及基于命令,通过使用第二网络路径,使用存储器访问协议执行数据的传送。数据的传送可以包括将数据从目标传送到客户端。数据的传送可以包括将数据从客户端传送到目标。该系统还可以包括:服务器,其被配置为使用第三网络路径接收请求,以及基于请求,使用第一网络路径将命令发送到目标。该系统还可以包括:客户端,其被配置为使用第三网络路径将请求发送到服务器,以及通过使用第二网络路径,使用存储器访问协议执行数据的传送。服务器可以被配置为使用第三网络路径的网络堆栈接收请求。目标可以被配置为使用第一网络路径将基于传送的完成发送到服务器。服务器可以被配置为使用第三网络路径将基于完成的成功的指示发送到客户端。命令可以是第一命令,传送可以是第一传送,目标可以是一个或多个目标之一,第一网络路径可以是一个或多个第一网络路径之一,第二网络路径可以是一个或多个第二网络路径之一,并且该系统还可以包括:服务器,其被配置为确定第一传送的状态,以及基于状态,使用一个或多个第一网络路径之一,将第二命令发送到所述一个或多个目标之一,其中,第二命令可以用于通过使用第二网络路径之一,使用存储器访问协议在客户端和所述一个或多个目标之一之间执行奇偶校验数据的第二传送。
8.一种装置可以包括:目标接口;和一个或多个网络接口,其被配置为将目标接口连接到第一网络路径和第二网络路径,其中,目标接口可以被配置为使用第一网络路径接收命令,以及基于命令,通过使用第二网络路径,使用存储器访问协议执行传送。目标接口可以被配置为基于传送,使用第一网络路径发送完成。目标接口可以被配置为初始化第二网络路径的存储器访问协议的连接。该装置还可以包括:一个或多个资源,其中,目标接口可以被配置为通过使用第二网络路径,使用存储器访问协议提供对一个或多个资源的访问。所述一个或多个资源可以包括存储设备。所述一个或多个资源可以包括加速器。所述一个或多个资源可以包括密钥值存储。目标接口可以包括非易失性存储器快速(nvme)接口。
附图说明
9.为了在所有附图中进行说明,附图不一定是按比例绘制的,并且类似结构或功能的元素通常可以由相似的附图标记或其部分表示。附图仅用于方便描述本文描述的各种实施例。附图不描述本文公开的教导的每个方面,并且不限制权利要求的范围。为了防止附图变得模糊,可能不是所有的组件、连接等都被显示,并且可能不是所有的组件都具有附图标记。然而,组件配置的模式可以从附图中容易地看出。附图结合说明书示出本公开的示例实施例,并且结合具体实施方式用于解释本公开的原理。
10.图1示出根据本公开的示例实施例的数据传送方案的实施例。
11.图2示出根据本公开的示例实施例的使用存储器访问协议将数据远程传送到存储器的数据传送方案的示例实施例。
12.图3a示出根据本公开的示例实施例的使用存储器访问协议将数据远程传送到存储器的数据传送方案的实施例的序列图的第一部分。
13.图3b示出根据本公开的示例实施例的使用存储器访问协议将数据远程传送到存储器的数据传送方案的实施例的序列图的第二部分。
14.图4示出根据本公开的示例实施例的使用存储器访问协议将数据远程传送到存储器的数据传送方案的实施例的客户端侧流程的方法的示例实施例。
15.图5a示出根据本公开的示例实施例的使用存储器访问协议将数据远程传送到存储器的数据传送方案的实施例的服务器侧流程的方法的示例实施例的第一部分。
16.图5b示出根据本公开的示例实施例的使用存储器访问协议将数据远程传送到存储器的数据传送方案的实施例的服务器侧流程的方法的示例实施例的第二部分。
17.图6示出根据本公开的示例实施例的客户端的示例实施例。
18.图7示出根据本公开的示例实施例的服务器集群的示例实施例。
19.图8示出根据本公开的示例实施例的使用存储器访问协议将数据远程传送到存储器的系统的示例实施例。
20.图9示出根据本公开的示例实施例的使用存储器访问协议将数据远程传送到存储器的方法的实施例。
具体实施方式
21.数据处理系统可以包括客户端,其可以访问可由服务器控制的一个或多个资源,诸如存储设备、加速器等。服务器可以通过后端网络连接到一个或多个资源,后端网络可以使用具有相对低的开销和/或延迟的协议,诸如远程直接内存访问(rdma)。然而,服务器可以通过前端网络连接到客户端,前端网络可以使用具有一个或多个协议的网络堆栈,所述一个或多个协议具有相对高的开销和/或延迟,诸如超文本传输协议(http)和/或传输控制协议(tcp)。因此,当客户端向服务器发送数据请求时,可以以相对低的开销和/或延迟将数据从一个或多个资源传送到服务器,但是可能以相对高的开销和/或延迟将数据从服务器传送到客户端。根据实施细节,这可能产生可损害客户端处理所请求的数据的能力的瓶颈。
22.在根据本公开的示例实施例的数据传送方案中,客户端可以通过向服务器发送请求,从由服务器控制的一个或多个资源请求数据。基于接收到请求,服务器可以向一个或多个网络目标发送指示一个或多个网络目标从一个或多个资源检索所请求的数据的命令。然而,一个或多个网络目标不是将数据有效载荷发送到服务器,而是将数据有效载荷发送到客户端。例如,在一些实施例中,一个或多个网络目标可以使用可具有相对低的开销和/或延迟的一个或多个网络路径和/或协议将数据有效载荷发送到客户端的一个或多个存储器位置。根据实施细节,这可以提高客户端处理所请求的数据的能力。
23.在一些实施例中,数据传送方案可以实现一种或多种数据保护技术。例如,在一些实施例中,在完成到客户端存储器的一个或多个数据传送时,一个或多个网络目标可以向服务器发送一个或多个对应的完成。基于完成,服务器可以向客户端发送成功或失败的指示。
24.作为数据保护的另一示例,在一些实施例中,可以实现错误纠正技术(例如,纠删码),其中,数据有效载荷可以被分为一个或多个部分(也可称为分块(chunk)),这些部分可以在单独的传输中从一个或多个网络目标被发送到客户端。可以为数据分块生成和/或与数据分块一起存储奇偶校验信息。如果数据分块中的一个或多个没有被成功传送到客户端
存储器(例如,数据分块中的一个或多个丢失),则一些或全部奇偶校验信息可以被检索和/或(例如,通过使用可具有相对低的开销和/或延迟的一个或多个网络路径和/或协议)从一个或多个网络目标被传送到客户端存储器。通过使用一些或全部奇偶校验信息,客户端可以重构一个或多个丢失的数据分块。
25.在一些实施例中,可以对运行在客户端上的应用隐藏与数据传送方案相关的特征、功能、操作等中的一个或多个。例如,在一些实施例中,客户端接口可以执行一个或多个操作,诸如初始化客户端和一个或多个网络目标之间的一个或多个网络连接,向服务器发送命令以向由服务器控制的一个或多个资源请求和/或发送数据,执行一个或多个数据保护操作(诸如校验和(checksum)验证、数据重构等)。在一些实施例中,客户端接口可以用例如一个或多个封装器、库(例如,帮助库)、应用编程接口(api)、设备驱动程序、函数调用、系统调用等或其组合来实现。
26.本文公开的原理具有独立的效用,并且可以被单独地实现,而且不是每个实施例都可以利用每个原理。然而,原理也可以在各种组合中被实现,其中一些组合可以以协同的方式放大各个原理的益处。
27.图1示出根据本公开的示例实施例的数据传送方案的实施例。图1示出的方案可以包括客户端102、服务器104和一个或多个目标106。服务器104可以通过第一网络路径108连接到客户端102。服务器104可以通过一个或多个第二网络路径110连接到一个或多个目标106。一个或多个目标106可以通过一个或多个第三网络路径112连接到客户端102。
28.在一些实施例中,服务器104可以被配置为通过第一网络路径108从客户端102接收请求114,以访问由服务器104控制的一个或多个资源。资源的一个示例可以包括存储资源,诸如单独的存储设备、存储资源的集合、对象(例如,密钥值)存储等。在一个或多个资源包括存储资源的实施例中,服务器104可以至少部分地被配置为存储服务器,例如,对象存储服务器。资源的另一示例可以包括计算资源,诸如加速器、图形处理单元(gpu)、神经处理单元(npu)、张量处理单元(tpu)等。在一个或多个资源包括计算资源的实施例中,服务器104可以至少部分地被配置为计算服务器。
29.在一些实施例中,服务器104可以被配置为响应于请求114,通过一个或多个第二网络路径110向一个或多个网络目标106发送一个或多个命令116。一个或多个网络目标106可以被布置为基于一个或多个命令116,提供对一个或多个资源的访问。例如,网络目标106中的一个或多个可以通过一个或多个互连、网络路径等连接到一个或多个资源(例如,存储资源、计算资源等)。
30.在一些实施例中,客户端102可以包括客户端存储器120(也可称为客户端缓冲器)和/或一个或多个网络目标106可以包括一个或多个目标存储器122(也可称为目标缓冲器)。一个或多个网络目标106可以被配置为响应于一个或多个命令116,在客户端存储器120和一个或多个目标存储器122之间传送一个或多个数据有效载荷118。例如,如果请求114是放置请求(put request),则可以将数据从客户端存储器120传送到一个或多个目标存储器122。作为另一示例,如果请求114是获取请求(get request),则可以将数据从一个或多个目标存储器122传送到客户端存储器120。
31.在一些实施例中,将一个或多个数据有效载荷从客户端102传送到一个或多个网络目标106的一个或多个存储器或从一个或多个网络目标106传送到客户端102的存储器可
以称为将数据远程传送到存储器。在一些实施例中,可以使用存储器访问协议执行将数据远程传送到存储器。在一些实施例中,存储器访问协议可以指可具有一个或多个以下特征的协议:(1)协议可以直接或几乎直接向接收装置的存储器和/或从发送装置的存储器传送数据;(2)协议可以绕过用于传送数据的网络路径的网络堆栈中的至少一部分;(3)协议可以在接收装置和/或发送装置的一个或多个中央处理单元(cpu)或其他处理器很少或没有参与的情况下操作;(4)协议可以在(例如,在网络堆栈的各层或其他网络软件之间)很少或没有复制数据的情况下传送数据;(5)协议可以在操作系统(os)的内核很少或没有参与的情况下向和/或从操作系统的用户空间传送数据;(6)协议可以在使用很少或不使用上下文切换、使用很少或不使用缓存空间等的情况下传送数据;和/或(7)协议可以具有相对低的开销、延迟等。例如,为了说明,在一些实施例中,根据本公开的示例实施例的存储器访问协议可以用rdma实现,但是本发明构思不限于与rdma或任何其他存储器访问协议一起使用。
32.在一些实施例中,客户端102可以作为运行在客户端、一个或多个其他装置等上的一个或多个应用的服务器。例如,在一些实施例中,客户端102可被实现为可运行一个或多个应用的计算服务器,该一个或多个应用可以对客户端102可存储到由服务器104控制的一个或多个存储资源和/或从其检索的数据进行操作。
33.在一些实施例中,客户端102、服务器104和/或一个或多个网络目标106中的任何一者可以用一个或多个处理器来实现,诸如复杂指令集计算机(cisc)处理器(诸如x86处理器)和/或简化指令集计算机(risc)处理器(诸如arm处理器、risc-v处理器等)、微控制器、复杂可编程逻辑器件(cpld)、现场可编程门阵列(fpga)、专用集成电路(asic)等,其中任何一个可以执行存储在任何类型的存储器中的指令。在一些实施例中,客户端102、服务器104和/或一个或多个网络目标106中的任何一者可以用任何处理资源或处理资源的组合来实现,任何处理资源或处理资源的组合可以被布置在例如一个或多个服务器中,该一个或多个服务器被配置在例如一个或多个服务器机箱、服务器机架、服务器机架组、数据室、数据中心、边缘数据中心、移动边缘数据中心等和/或其任何组合中。在一些实施例中,客户端102、服务器104和/或一个或多个网络目标106中的任何一者可以用一个或多个计算服务器集群来实现。在一些实施例中,客户端102、服务器104和/或一个或多个网络目标106中的任何一者可以被部署为软件的实现。尽管客户端102、服务器104和一个或多个网络目标106可能被示为单独的组件,但是在一些实施例中,这些组件中的任何一个的功能可以被分布在多个组件之间和/或组件中的一个或多个的功能可以被组合成共同的组件。此外,一些实施例可以包括多个客户端102和/或服务器104。
34.在一些实施例中,第一网络路径108、一个或多个第二网络路径110和/或一个或多个第三网络路径112中的任何一者可以用任何网络媒体、接口、协议等来实现,例如包括以太网、光纤通道、无限带宽(infiniband)、iwarp、传输控制协议/互联网协议(tcp/ip)、用户数据报协议/ip(udp/ip)、超文本传输协议(http)、超文本传输协议安全(https)、rdma、在融合以太网上的rdma(rdmaover converged ethernet,roce)、包括2g、3g、4g、5g等的任何一代无线网络、任何一代wi-fi、蓝牙、近场通信(nfc)等或其任何组合。在一些实施例中,第一网络路径108、一个或多个第二网络路径110和/或一个或多个第三网络路径112中的任何一者可以用任何互连媒体、接口、协议等来实现,例如包括外围组件互连快速(pcie)、非易失性内存快速(nvme)、nvme-over-fabric(nvme-of)、计算快速链接(cxl)和/或相干协议
(诸如cxl.mem、cxl.cache、cxl.io等)、gen-z、开放相干加速器处理器接口(opencapi)、加速器的缓存相干互连(ccix)、高级可拓展接口(axi)等或其任何组合。在一些实施例中,第一网络路径108、一个或多个第二网络路径110和/或一个或多个第三网络路径112中的任何一者可以包括一个或多个交换机、集线器、路由器、网关网络、网络的网络(例如,内联网(internets))等。在一些实施例中,第一网络路径108、一个或多个第二网络路径110和/或一个或多个第三网络路径112中的任何一者可以用一个或多个安全功能(诸如加密)来实现。例如,在一些实施例中,网络协议、堆栈等可以实现可支持使用存储器访问协议对一个或多个数据传送进行加密的链路层。
35.在一些实施例中,存储器访问协议可以用硬件、软件或其组合来实现。例如,在(例如,使用roce)实现rdma的实施例中,一些(例如,大多数)rdma功能可以用支持rdma的通道适配卡或网络接口卡(nic)来实现。在这种实施例中,硬件rdma功能可以与相对小的内核模块和/或用户空间api一起操作。作为另一示例,在一些实施例中,可以至少部分地使用soft-roce来实现rdma,虽然soft-roce是用软件实现的,但是与具有例如用于套接字(sockets)、tcp和/或udp、ip、以太网驱动程序等的单独层的网络堆栈相比,soft-roce的开销、延迟等明显更少。
36.尽管图1所示的实施例不限于任何具体的实施细节,但为了说明,在一些实施例中,第一网络路径108可以通过使用网络堆栈,用具有相对高的开销和/或延迟的一个或多个协议来实现,诸如http、tcp等、(例如,在http、tcp等上的)任何类型的对象存储协议、对象存储服务、对象存储的远程过程调用、对象的api服务等,而一个或多个第二网络路径110和/或一个或多个第三网络路径112可以用具有相对低的开销、延迟等的一个或多个协议来实现,例如,存储器访问协议(诸如rdma)。在一些实施例中,第一网络路径108可以是前端网络或可以是其部分,而一个或多个第二网络路径110可以是后端网络或可以是其部分。根据实施细节,图1所示的方案可以减少与在客户端102和一个或多个网络目标106之间传送数据关联的开销、延迟等。
37.在一些实施例中,网络目标106中的一个或多个可以被配置为例如基于一个或多个对应数据有效载荷118的一个或多个成功传送,通过一个或多个网络路径110向服务器104发送一个或多个完成。在一些实施例中,响应于从一个或多个网络目标106接收到任何数量的完成,服务器104可以被配置为使用第一网络路径108向客户端102发送成功、降级(degraded)的数据传送(例如,部分成功)、失败等的指示。例如,如果不是与请求114关联的数据有效载荷118都被成功传送,但是有足够的数据有效载荷118被成功传送以使客户端能够(例如,使用诸如纠删码的错误纠正技术)重构一个或多个丢失的数据有效载荷,则可以发送降级的数据传送的指示。在一些实施例中,在降级的数据传送的情况下,可以通过一个或多个第三网络路径112和/或使用存储器访问协议将一个或多个奇偶校验数据有效载荷从网络目标106中的一个或多个传送到客户端102。在一些实施例中,可以在客户端102处而不是在服务器104处执行错误纠正,例如,因为服务器104可能没有接收一个或多个正常和/或奇偶校验数据有效载荷118来执行错误纠正操作。
38.图2示出根据本公开的示例实施例的使用存储器访问协议将数据远程传送到存储器的数据传送方案的示例实施例。图2所示的实施例可以用图1所示的实施例或本文描述的任何其他实施例来实现,或可以用于实现图1所示的实施例或本文描述的任何其他实施例。
1、...、216-8可以包括可将对应的数据分块253-1、...、253-8传送到其的应用缓冲器251内的对应的起始地址和数据长度257-1、...、257-8。在一些实施例中,服务器204可以(例如,使用nvme、nvme-of或任何其他协议)发送一个或多个命令216-1、...、216-8。
45.响应于命令216-1、...、216-8,网络目标206-1、...、206-8可以从对应的存储资源(例如,分布在存储资源上并由服务器204管理的对象(例如,密钥值(kv)对)存储)检索对应的数据分块253-1、...、253-8。在操作253-5-1、...、253-5-8中,网络目标206-1、...、206-8可以(例如,使用rdma或任何其他存储器访问协议)将对应的数据分块253-1、...、253-8传送到由起始地址和数据长度257-1、...、257-8指示的应用缓冲器251的对应部分。
46.在一些实施例中,网络目标206-1、...、206-8中的一个或多个可以基于在操作253-5-1、...、253-5-8中的一个或多个的数据传送的成功完成,向服务器204发送一个或多个完成。
47.在一些实施例中,根据在操作253-5-1、...、253-5-8中的一个或多个数据传送的成功或失败,服务器204可以分别向对应的网络目标206-9和206-10发送命令216-9和216-10中的一个或多个,以指示目标206-9和206-10分别检索奇偶校验分块253-9和253-10中的一个或多个。例如,如果在操作253-5-1、...、253-5-8中的数据传送中的一个或两个失败,则服务器204可以发送命令216-9和216-10中的一个或多个,以检索和传送一个或多个奇偶校验分块到应用缓冲器251,以便客户端接口252可以重构一个或两个丢失的数据分块。在一些实施例中,服务器204可以(例如,使用nvme、nvme-of或任何其他协议)发送命令216-9和216-10中的一个或多个。
48.在一些实施例中,命令216-9和216-10可以包括可将对应的奇偶校验分块253-9和253-10传送到其的应用缓冲器251内的对应的起始地址和数据长度257-9和257-10。然后,目标206-9和206-10中的一个或多个可以从对应的存储资源检索对应的奇偶校验分块253-9和253-10中的一个或多个,并且(例如,使用rdma或任何其他存储器访问协议)将奇偶校验分块253-9和253-10中的一个或多个传送到应用缓冲器251的对应部分。
49.在一些实施例中,一个或多个数据传送有可能部分或全部地以零复制传送来实现。在一些实施例中,执行零复制传送可能涉及,例如,使用存储器访问协议(例如,rdma)在目标和客户端的存储器之间传送数据。例如,在一些实施例中,一个或多个数据传送可以通过将数据直接传送到接收设备的存储器(例如,图1所示的存储器120和/或图2所示的缓冲器251)来用零复制传送实现。作为另一示例,在一些实施例中,一个或多个数据传送可以至少部分地用零复制传送到第一存储器然后传送到第二存储器来实现。例如,图2所示的实施例可以被修改为包括与客户端接口252关联的传送缓冲器(例如,rdma缓冲器)。可以用零复制传送将数据分块253中的一个或多个传送到这种传送缓冲器,然后将其传送到缓冲器251。
50.图3a示出根据本公开的示例实施例的使用存储器访问协议将数据远程传送到存储器的数据传送方案的实施例的序列图的第一部分。图3b示出根据本公开的示例实施例的使用存储器访问协议将数据远程传送到存储器的数据传送方案的实施例的序列图的第二部分。图3a和图3b共同构成可称为图3的单个附图。
51.图3所示的实施例可以用图1、图2所示的实施例或本文描述的任何其他实施例来实现,或可以用于实现图1、图2所示的实施例或本文描述的任何其他实施例。图3所示的实
施例可以包括与图1、图2或本文描述的任何其他实施例所示的元素类似的一个或多个元素,并且具有以相同数字结尾的附图标记的元素可以具有类似的结构和/或功能。为了说明,可以在一些具体实施细节(诸如实现为对象(例如,kv)存储服务器的服务器)的上下文中描述图3所示的实施例,但是本发明原理不限于这些或任何其他实施细节。在图3中,信息、信号、消息、软件调用和/或返回等一般可以如箭头所示水平地流动,并且时间一般可以向下推进,其中,组件的操作的时段在其相应的垂直时间线上被显示为实线。
52.参考图3,数据传送系统可以包括客户端302、服务器304和网络目标306-1、...、306-n中的一个或多个(可以统称为306),其可提供对由服务器304控制的一个或多个资源的访问。客户端接口352可以在客户端302上运行。在一些实施例中,客户端302(包括客户端接口352)可以(例如,通过可实现一个或多个协议(诸如http、tcp等、(例如,在http、tcp等上的)任何类型的对象存储协议、对象存储服务、对象存储的远程过程调用、对象的api服务等)的一个或多个第一网络路径和/或网络堆栈)与服务器304通信。在一些实施例中,服务器304可以通过可实现存储器访问协议(诸如rdma)的一个或多个第二网络路径与网络目标306-1、...、306-n中的一个或多个进行通信。在一些实施例中,客户端302(包括客户端接口352)可以通过可实现存储器访问协议(诸如rdma)的一个或多个第三网络路径与网络目标306-1、...、306-n中的一个或多个进行通信。
53.为了说明,本文描述的一些实施例可以使用函数调用(例如,init()、getobject()等)的示例名称,但是这些名称仅为示例,并且任何名称都可以被使用。存储器访问协议(例如,rdma)的初始化过程359可以在应用调用客户端接口352的初始化函数init()时开始。在操作361-1中,客户端接口352可以唤出(invoke)读取配置调用,其可以使客户端302在操作361-2中向服务器304发送获取配置请求。在操作361-3中,服务器304可以用消息向客户端302进行响应,发送网络目标306-1、...、306-n中的一个或多个所请求的网络配置信息、纠删码信息等,在操作361-4中,其可以被转发到客户端接口352。在一些实施例中,网络配置信息可以包括诸如连接到网络的装置的类型、数量、位置、能力等、连接到网络的一个或多个集线器、交换机、路由器、网关等的位置、一个或多个标识符(例如,网络标识符)、网络地址(例如,互联网协议(ip)地址)、句柄、认证信息、端口信息、连接标识符(id)、加密密钥、安全密钥、数字证书和/或可帮助客户端、服务器、网络目标等确定如何通过网络传输数据的任何其他信息的信息。
54.通过使用网络配置信息,在操作361-5-1、...、361-5-n中,客户端接口352可以通过发送初始化消息来初始化与网络目标306-1、...、306-n中的一个或多个的存储器访问协议(例如,rdma)连接。在操作361-6-1、...、361-6-n中,网络目标306-1、...、306-n中的一个或多个可以用包括一个或多个连接参考号、句柄等的一个或多个成功消息进行响应。
55.在一些实施例中,当在操作361-7中客户端接口352可以唤出创建桶(bucket)调用(其可以致使在操作361-8中客户端302向服务器304发送创建桶请求)时,初始化过程359可以继续。在操作361-9中,服务器304可以用指示成功创建桶的消息(在操作361-10中,其可以被转发到客户端接口352)向客户端302进行响应。初始化过程359可以以客户端接口352向应用返回初始化函数init()的结束状态(done status)而结束。在一些实施例中,创建桶可能涉及客户端确定桶的桶名称、区域、存储管理选项、所有权权利、访问权限等。在一些实施例中,创建桶可能涉及服务器实现(例如,由客户端确定的)桶的桶名称、区域、存储管
理选项、所有权权利、访问权限等。
56.当应用唤出客户端接口352的getobject()调用时,数据传送过程363(在该示例中,对象获取过程)可以开始。在操作365-0中,客户端接口352可以通过执行一个或多个管理(administrative)功能来开始getobject()调用。例如,客户端接口352可以重新使用应用缓冲器,收集应用缓冲器的一个或多个起始地址和/或数据长度,分配奇偶校验数据的一个或多个缓冲器,收集奇偶校验缓冲器的一个或多个起始地址和/或数据长度,等等。在该示例实施例中,kv对的密钥可以用于存储地址和/或数据长度信息、协议连接信息等。因此,在操作365-0中,客户端接口352可以用地址、数据长度、协议连接信息等来预置密钥。
57.当在操作365-1中客户端接口352唤出getobject调用(其可以致使在操作365-2中客户端302向服务器304发送获取请求(get request))时,实际的数据传送过程可以开始。在操作365-3-1、...、365-3-n中,服务器304可以通过向网络目标306-1、...、306-n中的一个或多个发送一个或多个命令(例如,command_nt1、...、command_ntn)来响应获取请求。在一些实施例中,一个或多个命令可以包括使网络目标306-1、...、306-n中的一个或多个能够使用存储器访问协议(例如,rdma)执行数据传送操作的信息(例如,rdma信息,诸如数据长度、起始地址、客户端标识符等)。网络目标306-1、...、306-n中的一个或多个可以在操作365-4中通过执行一个或多个内部任务来开始响应命令,所述一个或多个内部任务诸如分配本地缓冲器、从一个或多个本地存储设备读取所请求的数据的一个或多个分块、从命令获得连接句柄(例如,连接参考号)等(如为网络目标306-1所示)。
58.在操作365-5-1、...、365-5-n中,网络目标306-1、...、306-n中的一个或多个可以(通过使用例如诸如数据长度、起始地址等的信息)使用存储器访问协议(例如,rdma)执行将所请求的数据作为数据有效载荷到客户端302的一个或多个传输。在操作365-6-1、...、365-6-n中,网络目标306-1、...、306-n中的一个或多个可以向服务器304发送与一个或多个数据有效载荷传输对应的一个或多个的完成。
59.在操作365-7中,服务器304可以向客户端302发送获取完成(get complete)消息,在操作365-8中,客户端302可以向客户端接口352发送返回。在一些实施例中,在操作365-9中,客户端接口352可以将getobject和从网络目标306-1、...、306-n中的一个或多个传送的数据或指向该数据的指针返回给应用。然而,在一些实施例中,getobject的返回可以被忽略,例如,因为网络目标306-1、...、306-n中的一个或多个可能已经使用存储器访问协议(例如,rdma)将所请求的数据直接传送到应用缓冲器。数据传送过程363可以以客户端接口352向应用返回getobject()函数的结束状态而终止。
60.图4示出根据本公开的示例实施例的使用存储器访问协议将数据远程传送到存储器的数据传送方案的实施例的客户端侧流程的方法的示例实施例。图4所示的实施例可以用本文公开的任何客户端(诸如图1、图2和/或图3所示的客户端102、202和/或302)来实现,或可以用于实现本文公开的任何客户端。为了说明,可以在一些具体实施细节(诸如实现为对象(例如,kv)存储服务器的服务器、用rdma实现的存储器访问协议等)的上下文中描述图4所示的实施例,但是本发明原理不限于这些或任何其他实施细节。
61.参考图4,当在操作480-1中应用调用getobject()函数时,该方法可以开始。在操作480-2中,该方法可以确定是否有用户缓冲器被传递到该函数。如果已经传递用户缓冲器,则在操作480-3中,该方法可以捕获用户缓冲器的起始地址和/或数据长度。否则,在操
作480-4中,该方法可以分配(例如,具有用于任何数据和/或奇偶校验分块的最大缓冲器大小的)缓冲器,并且捕获新分配的缓冲器的起始地址和/或数据长度。该方法可以从操作480-3或480-4前进到操作480-5,在操作480-5中,客户端可以检索使用init()函数获得的网络拓扑(例如,网络配置)信息(例如,如图3所示)。在一些实施例中,网络拓扑和/或配置信息可以包括诸如连接到网络的装置的类型、数量、位置、能力等、连接到网络的一个或多个集线器、交换机、路由器、网关等的位置、一个或多个标识符(例如,网络标识符)、网络地址(例如,ip地址)、句柄、认证信息、端口信息、连接id、加密密钥、安全密钥、数字证书和/或可帮助客户端、服务器、网络目标等确定如何通过网络传输数据的任何其他信息的信息。该方法还可以确定要使用的奇偶校验分块和/或比特的数量。
62.在操作480-6中,该方法可以检查奇偶校验分块和/或比特的数量。如果该数量为零,则该方法可以继续前进到操作480-8。然而,如果在操作480-6中确定奇偶校验分块和/或比特的数量为非零,则这可能指示没有选择错误纠正(例如,纠删码)技术。因此,该方法可以前进到操作480-7,在操作480-7中,客户端可以分配具有基于例如纠删码(ec)分块大小和/或奇偶校验分块的数量的大小的缓冲器。该方法还可以捕获奇偶校验缓冲器的起始地址和/或数据长度,并且前进到操作480-8。
63.在操作480-8中,该方法可以(例如,使用如图3所示的init()函数)收集在初始化阶段期间建立的存储器访问协议(例如,rdma)句柄。在操作480-9中,该方法可以提供用于使一个或多个网络目标能够使用存储器访问协议执行到客户端的数据传送的信息。该信息可以包括,例如,用于标识要传送的数据的信息。该信息可以包括,例如,用于确定如何执行存储器访问协议操作的访问信息。例如,在一些实施例中,用于使一个或多个网络目标能够使用存储器访问协议执行到客户端的数据传送的信息可以通过在对象存储协议的请求消息中的一个或多个字段(例如,未使用的字段)中(例如,在一个或多个由逗号和/或冒号分隔的字段中)包括数据长度、数据起始地址、奇偶校验长度、奇偶校验起始地址、一个或多个网络目标的句柄等中的一者或多者来提供。作为另一示例,在一些实施例中,用于使一个或多个网络目标能够使用存储器访问协议执行到客户端的数据传送的信息可以通过生成编码对象密钥来提供,例如,通过在对象密钥中对一个或多个以下信息进行编码来提供:数据长度、数据起始地址、奇偶校验长度、奇偶校验起始地址、网络目标(例如,图3所示的网络目标306-1、...、306-n)中的一个或多个的一个或多个句柄、和/或对象密钥的实际(例如,原始)内容。在一些实施例中,在消息的字段中提供信息和/或在编码密钥中对信息进行编码可能涉及使用可以不用作密钥的一个或多个标签、定界符等(例如,一个或多个特殊字符)。这些示例是为了说明而提供的,并且可以使用任何其他技术来提供信息,以使一个或多个网络目标使用存储器访问协议执行到客户端的数据传送。
64.在操作480-10中,该方法可以(例如,通过唤出获取对象调用(例如,图3所示的getobject()调用363))使用存储器访问协议来初始化一个或多个网络目标和客户端之间的数据传送。在一些实施例中,使用存储器访问协议在一个或多个网络目标和客户端之间传送的数据可以包括实际(例如,原始)对象密钥,而编码在编码对象密钥中的数据长度、数据起始地址、奇偶校验长度、奇偶校验起始地址、一个或多个网络目标的句柄等中的一者或多者可以由客户端(例如,图1、图2和/或图3所示的客户端102、202和/或302)、服务器(例如,图1、图2和/或图3所示的服务器104、204和/或304)和/或网络目标(例如,图1、图2和/或
图3所示的目标106、206和/或306-1、...、306-n)中的一个或多个用来实现使用存储器访问协议从一个或多个网络目标向客户端传送数据。在一些实施例中,可以在网络(诸如可实现诸如http、tcp等、(例如,在http、tcp等上的)任何类型的对象存储协议、对象存储服务、对象存储的远程过程调用、对象的api服务等的一个或多个协议的一个或多个第一网络路径和/或网络堆栈)上发送获取对象调用和/或返回。
65.在操作480-11中,该方法可以确定在操作480-10中的获取对象调用是否成功。例如,如果在图3中的操作365-5-1、...、365-5-n中的全部数据传送成功完成(即,如果将全部数据分块成功直接传送到客户端缓冲器),则可以认为获取对象调用成功。如果获取对象调用成功,则该方法可以前进到操作480-12,在操作480-12中,该方法可以获得可能已经在缓冲器(例如,假缓冲器)中返回的实际长度和校验和(例如,md5校验和)。在操作480-13中,该方法可以确定实际长度和校验和是否与在操作480-10中通过获取对象调用传送的实际长度和校验和匹配。如果实际长度和校验和匹配,则在操作480-14中,该方法可以以成功状态结束,否则,在操作480-15中,该方法可以以失败状态结束。
66.然而,如果在操作480-11中该方法确定在操作480-10中的获取对象调用不成功(例如,所请求的对象的数据分块没有全部被成功传送),则该方法可以前进到操作480-16,在操作480-16中,该方法可以确定在操作480-10中的获取对象调用是否传送降级的数据。在一些实施例中,如果传送足够的数据分块以使得能够从奇偶校验分块构建丢失的分块(例如,如果丢失的分块的数量小于或等于奇偶校验分块的数量),则可以认为所传送的数据是降级的。如果所传送的数据可能不被认为是降级的(例如,在操作480-10中的对象调用没有传送足够的数据分块),则在操作480-17中该方法可以以失败状态结束。
67.然而,如果在操作480-16中该方法确定在操作480-10中的获取对象调用传送降级的数据,则该方法可以前进到操作480-18,在操作480-18中,该方法可以获得其可用于重构丢失的一个或多个数据分块的一个或多个奇偶校验分块。然后,该方法可以前进到上述的操作480-13。
68.图5a示出根据本公开的示例实施例的使用存储器访问协议将数据远程传送到存储器的数据传送方案的实施例的服务器侧流程的方法的示例实施例的第一部分。图5b示出根据本公开的示例实施例的使用存储器访问协议将数据远程传送到存储器的数据传送方案的实施例的服务器侧流程的方法的示例实施例的第二部分。图5a和图5b可以统称为图5。图5所示的实施例可以用本文公开的任何服务器(诸如图1、图2和/或图3所示的服务器104、204和/或304)来实现,或可以用于实现本文公开的任何服务器。图5所示的实施例可以实现例如与图4所示的一个或多个客户端侧操作进行交互的一个或多个服务器侧操作。为了说明,可以在一些具体实施细节(诸如实现为对象(例如,kv)存储服务器的服务器、用rdma实现的存储器访问协议等)的上下文中描述图5所示的实施例,但是本发明原理不限于这些或任何其他实施细节。
69.参考图5,该方法可以在操作582-1中开始,在操作582-1时,服务器可以接收获取对象请求(例如,在图3中的操作365-2所示的请求)。在操作582-2中,该方法可以接收用于使一个或多个网络目标使用存储器访问协议执行到客户端的数据传送的信息。例如,可以在对象存储协议的请求消息中的一个或多个字段(例如,未使用的字段)中(例如,在一个或多个由逗号和/或冒号分隔的字段中)接收该信息。作为另一示例,在一些实施例中,可以通
过对来自对象密钥的一个或多个以下信息进行解码来接收信息:可能已编码在(例如,如参考图4中的操作480-9描述的)编码对象密钥和/或对象密钥的实际(例如,原始)内容中的数据长度、数据起始地址、奇偶校验长度、奇偶校验起始地址、网络目标(例如,图3所示的网络目标306-1、...、306-n)中的一个或多个的一个或多个句柄。
70.在操作582-3中,该方法可以确定是否要在一个或多个目标和客户端之间直接传送数据(例如,是否要使用存储器访问协议(诸如rdma)向在客户端处的存储器传送数据和/或从其传送数据)。在一些实施例中,该方法可以确定要在一个或多个目标和客户端之间直接传送数据(例如,通过确定标志的状态,通过确定与获取对象请求一起发送的数据长度大于零,等等)。如果不在一个或多个目标和客户端之间直接传送数据(例如,如果与获取对象请求一起发送的数据长度为零),则该方法可以前进到操作582-4,在操作582-4中,该方法可以通过经由服务器在一个或多个目标和客户端之间传送数据来完成请求。例如,服务器可以向一个或多个网络目标发送一个或多个命令,该一个或多个网络目标可以(例如,使用存储器访问协议(诸如rdma))将所请求的数据返回给服务器,然后,服务器可以将所请求的数据发送到客户端(例如,通过诸如可实现一个或多个协议(诸如http、tcp等、(例如,在http、tcp等上的)任何类型的对象存储协议、对象存储服务、对象存储的远程过程调用、对象的api服务等)的一个或多个第一网络路径和/或网络堆栈的网络)。
71.然而,如果在操作582-3中该方法确定要在一个或多个目标和客户端之间直接传送数据(例如,要使用存储器访问协议(诸如rdma)向在客户端处的存储器直接传送数据和/或从其直接传送数据),则该方法可以前进到操作582-5,在操作582-5中,该方法可以发出元数据读取。在操作582-6中,该方法可以确定元数据读取是否成功。如果元数据读取不成功,则在操作582-7中该方法可以以失败状态结束。然而,如果元数据读取成功,则该方法可以前进到操作582-8,在操作582-8中,该方法可以获得可用于从可使用一个或多个网络目标访问的一个或多个存储资源中检索所请求的数据对象的信息。该信息可以包括一个或多个网络目标的以下一项或多项:错误纠正(例如,纠删码)信息、数据长度、校验和(例如,md5校验和)、数据地址、一个或多个奇偶校验存储设备等。
72.在操作582-9中,该方法可以使用在操作582-8中获得的数据来将一个或多个数据地址范围和/或奇偶校验地址范围(例如,确定性地)映射到一个或多个网络目标。在操作582-10中,该方法可以生成一个或多个错误纠正(例如,纠删码)密钥名称。在操作582-11中,该方法可以(例如,使用纠删码密钥名称、存储器访问协议(例如,rdma)句柄、地址范围等)唤出一个或多个网络目标的api。
73.在操作582-12中,该方法可以初始化所请求的数据(例如,对象)从一个或多个网络目标到客户端的存储器缓冲器的传送。这可以包括,例如,服务器向一个或多个网络目标发送一个或多个命令(例如,如图3所示的操作365-3-1、...、365-3-n),一个或多个网络目标检索和/或传送一个或多个所请求的数据分块到客户端(例如,如图3所示的操作365-5-1、...、365-5-n),和/或一个或多个网络目标向服务器发送一个或多个完成(例如,如图3所示的操作365-6-1、...、365-6-n)。
74.在操作582-13中,该方法可以确定在操作582-12中的数据传送是否成功。例如,如果在图3中的操作365-5-1、...、365-5-n中的全部数据有效载荷传送成功完成(即,如果将全部数据分块成功地直接传送到客户端缓冲器),则可以认为数据传送是成功的。如果数据
传送成功,则该方法可以前进到操作582-14,在操作582-14中,服务器可以在返回缓冲器中填充实际长度和校验和(例如,md5校验和),以供客户端用来验证所传送的数据的校验和。然后,在操作582-15中,该方法可以以成功状态结束。
75.然而,如果在操作582-13中服务器确定在操作582-12中的数据传送不成功(例如,所请求的对象的数据分块不是全部被成功传送),则该方法可以前进到操作582-16,在操作582-16中,该方法可以确定在操作582-12中的数据传送是否传送足够的数据分块以使得能够从奇偶校验分块重构丢失的分块(例如,丢失的分块的数量是否少于或等于奇偶校验分块的数量)。如果没有成功传送足够的数据分块被以使得能够从奇偶校验分块重构丢失的分块(例如,如果丢失的分块的数量大于奇偶校验分块的数量),则在操作582-17中,该方法可以以失败状态结束。
76.然而,如果在操作582-16中该方法确定操作582-12传送足够的数据分块以使得能够从奇偶校验分块重构丢失的分块(例如,如果丢失的数据分块的数量少于或等于奇偶校验分块的数量),则可以认为所传送的数据是降级的。因此,该方法可以前进到操作582-18,在操作582-18中,服务器可以初始化一个或多个奇偶校验分块从一个或多个网络目标到客户端的存储器缓冲器的传送。这可以包括,例如,服务器向一个或多个网络目标发送一个或多个命令(例如,类似于如图3所示的操作365-3-1、...、365-3-n),一个或多个网络目标检索和/或传送一个或多个所请求的奇偶校验分块到客户端(例如,类似于如图3所示的操作365-5-1、...、365-5-n),和/或一个或多个网络目标向服务器发送一个或多个完成(例如,类似于如图3所示的操作365-6-1、...、365-6-n)。
77.在操作582-19中,该方法可以确定奇偶校验分块的传送是否成功(例如,所传送的奇偶校验分块的数量是否足以重建一个或多个丢失的数据分块)。如果奇偶校验分块没有成功,则在操作582-20中,该方法可以以失败状态结束。然而,如果在操作582-19中奇偶校验分块的传送是成功的,则该方法可以前进到操作582-21,在操作582-21中,服务器可以在返回缓冲器中填充实际长度和校验和(例如,md5校验和),以供客户端用来验证所传送的数据的校验和。然后,在操作582-22中,该方法可以降级状态结束。
78.为了说明,参考图2、图3、图4和图5描述的实施例可以示出获取操作的示例。然而,放置(put)和/或其他操作可以以类似的方式实现,例如,采用(例如,使用rdma)从客户端存储器直接传送到在一个或多个网络目标处的一个或多个目标存储器的数据有效载荷,和/或采用向服务器发送一个或多个完成的一个或多个网络目标。
79.图6示出根据本公开的示例实施例的客户端的示例实施例。图6所示的客户端602可以用本文公开的任何客户端(诸如图1、图2和/或图3所示的客户端102、202和/或302)来实现,或可以用于实现本文公开的任何客户端。为了说明,可以在一些具体实施细节的上下文中描述图6所示的实施例,但是本发明原理不限于这些或任何其他实施细节。
80.参考图6,客户端602可以包括存储器646、客户端接口652、一个或多个nic 671、以及一个或多个计算单元677。存储器646和/或一个或多个计算单元677可以由运行在客户端602上的一个或多个应用650使用。因此,在一些实施例中,对于一个或多个应用650,客户端602可以表现为计算服务器。客户端接口652可以例如用可对一个或多个应用650隐藏一个或多个数据传送操作的一个或多个封装库(也可以称为帮助库)来实现。在一些实施例中,客户端接口652可以使用存储器访问协议(例如,rdma)实现到存储器(例如,存储器646)的
远程数据传送。
81.图7示出根据本公开的示例实施例的服务器集群的示例实施例。服务器集群784可以包括两个服务器704-1和704-2,其中任一服务器可以用本文公开的任何服务器(诸如图1、图2和/或图3所示的服务器104、204和/或304)来实现,或可以用于实现本文公开的任何服务器。为了说明,可以在一些具体实施细节的上下文中描述图7所示的实施例,但是本发明原理不限于这些或任何其他实施细节。
82.参考图7,服务器集群784还可以包括三个双端口nic 771、773和775、一个或多个对等网络连接764和/或766、目标接口756、目标接口子系统758、和/或可包括例如一个或多个资源762(诸如存储资源、计算资源等)的资源池760。
83.在一些实施例中,第一nic 771的端口1和端口2可以为第一服务器704-1分别提供对一个或多个前端网络和一个或多个后端网络的访问。类似地,第二nic 773的端口1和端口2可以为第二服务器704-2分别提供对一个或多个前端网络和一个或多个后端网络的访问。在一些实施例中,一个或多个前端网络可以实现可与一个或多个客户端通信的网络堆栈(例如,用http、tcp等、(例如,在http、tcp等上的)任何类型的对象存储协议、对象存储服务、对象存储的远程过程调用、对象的api服务等),而一个或多个后端网络可以使用存储器访问协议(例如,rdma)实现到存储器的远程数据传送。
84.在一些实施例中,一个或多个后端网络可以使服务器704-1和/或704-2能够访问资源池760(例如,使用可例如用nvme实现的目标接口756和/或目标接口子系统758)。在一些实施例中,一个或多个对等网络连接764和/或766可以使服务器704-1和/或704-2能够访问其他服务器集群的资源池,以及使其他服务器集群能够访问资源池760。
85.在一些实施例中,第三nic 775可以提供额外的网络连接,例如,使目标接口756能够使用存储器访问协议(例如,rdma)与一个或多个客户端来实现到存储器的远程数据传送(例如,如上面参考图1、图2和/或图3描述的)。
86.图8示出根据本公开的示例实施例的使用存储器访问协议将数据远程传送到存储器的系统的示例实施例。图8所示的实施例可以包括一个或多个客户端802和一个或多个服务器集群884。在一些实施例中,一个或多个客户端802可以用图6所示的一个或多个客户端602来实现。在一些实施例中,一个或多个服务器集群884可以用图7所示的一个或多个服务器集群784来实现。为了说明,可以在一些具体实施细节(诸如用使用固态驱动器(ssd)的kv池来实现的资源和/或用nvme-of来实现的网络目标)的上下文中描述图8所示的实施例,但是本发明原理不限于这些或任何其他实施细节。
87.图8所示的实施例可以包括第一网络构造(fabric)891和第二网络构造893。第一网络构造891可以提供在服务器集群884中的一个或多个服务器和一个或多个客户端802之间的第一前端网络。第一网络构造891可以例如使用可使用相对高的开销和/或延迟的一个或多个协议(诸如http、tcp等、(例如,在http、tcp等上的)任何类型的对象存储协议、对象存储服务、对象存储的远程过程调用、对象的api服务等)进行通信的一个或多个网络堆栈来实现。相比之下,第二网络构造893可以使用可具有相对低的开销、延迟等的存储器访问协议(例如,rdma)实现到存储器的远程数据传送。在一些实施例中,第二网络构造893可以使网络目标(例如,一个或多个服务器集群884中的nvme-of目标)能够响应于来自服务器的命令,将数据从kv池(例如,kv存储)直接传送到一个或多个客户端802的存储器。
88.在一个或多个资源被实现为一个或多个存储设备的实施例中,存储设备可以包括例如基于固态介质(例如,ssd)、磁性介质(例如,硬盘驱动器(hdd))、光学介质等或其任何组合的任何类型的非易失性存储介质。例如,在一些实施例中,存储设备可以被实现为基于非and(nand)快闪存储器的ssd、持久性存储器(诸如交叉网格非易失性存储器)、具有体(bulk)电阻变化的存储器、相变存储器(pcm)等或其任何组合。任何这种存储设备可以使用任何连接器配置(诸如sata、scsi、sas、u.2、m.2等)以任何外形尺寸(诸如3.5英寸、2.5英寸、1.8英寸、m.2、企业和数据中心ssd外形尺寸(edsff)、nf1等)来实现。任何这种存储设备可以完全或部分地与服务器机箱、服务器机架、数据室、数据中心、边缘数据中心、移动边缘数据中心和/或其任何组合来实现和/或结合其使用。
89.本文描述的任何功能(包括主机功能、客户端功能(例如,客户端接口)、服务器功能、目标功能(例如,目标接口和/或子系统)等中的任何一个)可以用硬件、软件或其组合来实现,所述硬件、软件或其组合包括执行存储在任何类型的存储器中的指令的组合逻辑、顺序逻辑、一个或多个定时器、计数器、寄存器和/或状态机、一个或多个cpld、fpga、asic、嵌入式处理器、cpu(诸如cisc处理器(诸如x86处理器)和/或risc处理器(诸如arm处理器))、gpu、npu、tpu等,或其任何组合。
90.图9示出根据本公开的示例实施例的使用存储器访问协议将数据远程传送到存储器的方法的实施例。在操作902中,该方法可以开始。在操作904中,该方法可以在目标处从服务器接收命令、用于标识数据的信息和用于使用存储器访问协议执行数据传送的访问信息。例如,在一些实施例中,用于标识数据的信息可以用对象密钥来实现,并且访问信息可以包括rdma信息。在操作906中,该方法可以基于命令,基于访问信息,使用存储器访问协议在目标和客户端之间执行数据传送。例如,在一些实施例中,目标可以使用rdma将数据传送到客户端。在操作908中,该方法可以结束。
91.图9所示的实施例以及本文描述的全部其他实施例是示例操作和/或组件。在一些实施例中,可以省略一些操作和/或组件,和/或可以包括其他操作和/或组件。此外,在一些实施例中,操作和/或组件的时间和/或空间顺序可以有所变化。尽管一些组件和/或操作可以被示为单独组件,但是在一些实施例中,单独显示的一些组件和/或操作可以被整合成单个组件和/或操作,和/或显示为单个组件和/或操作的一些组件和/或操作可以用多个组件和/或操作来实现。
92.已经在各种实施细节的上下文中描述了上面公开的实施例,但是本公开原理不限于这些或任何其他具体细节。例如,一些功能被描述为由特定组件实现,但是在其他实施例中,该功能可以被分布在位于不同位置并具有各种用户界面的不同的系统和组件之间。特定实施例被描述为具有具体过程、操作等,但是这些术语也包含在其中具体过程、操作等可以用多个过程、操作等来实现的实施例,或在其中多个过程、操作等可以被整合到单个过程、步骤等的实施例。对组件或元素的引用可能仅指组件或元素的部分。例如,对集成电路的引用可以指全部或仅部分集成电路,并且对块的引用可以指整个块或者一个或多个子块。在本公开和权利要求中的诸如“第一”和“第二”的术语的使用可能仅用于区分它们所修饰的事物,并且可能不指示任何空间或时间上的顺序,除非从上下文中看出。在一些实施例中,对事物的引用可以指事物的至少一部分,例如,“基于”可以指“至少部分地基于”,“访问”可以指“至少部分地访问”等。对第一元素的引用可能不意味着第二元素的存在。
93.上面描述的各种细节和实施例可以根据本专利公开的创造性原理来进行组合,以产生额外的实施例。由于本专利公开的创造性原理可以在不脱离创造性构思的情况下在布置和细节上进行修改,因此这种改变和修改被认为落入所附的权利要求的范围中。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

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

相关文献