隔离分布式存储系统的客户端的制作方法

文档序号:9635164阅读:354来源:国知局
隔离分布式存储系统的客户端的制作方法
【技术领域】
[0001] 本公开内容涉及分布式存储系统。
【背景技术】
[0002] 分布式系统一般地包括许多松散耦合的计算机,其中的每个计算机通常包括计算 资源(例如,一个或多个处理器)和存储资源(例如,存储器、闪速存储器和/或磁盘)。 分布式存储系统重叠分布式系统的存储资源上的存储抽象(例如,键/值存储或者文件系 统)。在分布式存储系统中,运行在一个计算机上的服务器进程可以将该计算机的存储资源 输出到运行在其他计算机上的客户端进程。远程过程调用(RPC)可以将数据从服务器进程 传送到客户端进程。
[0003] 远程过程调用是由执行在第一机器上的客户端软件所发起并且由执行在第二机 器上的服务器软件所服务的双侧软件操作。服务软件中的存储系统请求(例如,读取数据) 可以要求可用的处理器,其可以将大量的限制放置在分布式存储系统上。在分布式存储系 统的情况中,这意味着除非远程计算机具有用于服务客户端的请求的可用的处理器,否则 客户端进程不能访问远程计算机的存储资源。此外,针对分布式系统中的处理器资源和存 储资源的需求经常不匹配。具体而言,计算资源(即,处理器)可以具有繁重和/或不可预 测的使用模式,而存储资源可以具有轻量并且非常可预测的使用模式。
[0004] 隔离连接到相同服务器的用户的性能通常通过限制或者拒绝服务器处的用户操 作而完成。如果存在处理请求的不足的资源,则服务器可以将其拒绝。例如,服务器侧资源 管理涉及跟踪由服务器上的每个用户所消耗的资源的数量。当请求进入服务器时,服务器 使用其对输入请求的全局知识来决定是否服务新请求。

【发明内容】

[0005] 当对于服务器的客户端请求是单侧操作时(例如,远程直接存储器访问(RDMA)), 诸如单侧分布式存储系统中的那些操作,不存在对请求的服务器侧处理。消除服务器侧处 理当其变得过载时不仅防止服务器拒绝请求,而且其防止服务器进程甚至检测其过载。因 此,不能以传统的方式管理在访问相同服务器的用户/客户端之间共享的资源,诸如带宽。 例如,服务器侧资源管理不针对RDMA请求工作,这是因为服务器进程不服务请求。由专用 硬件直接服务请求。尽管每个客户端可以严格地限制对服务器做出请求的速率以便减少服 务器处的资源使用,但是客户端缺乏其他客户端可以使用多少资源的全局知识。客户端之 间的性能隔离确保行为不当的客户端过多地减少行为良好的客户端的性能并且,允许不同 的服务质量等级在客户端之间被建立。
[0006] 本公开的一个方面提供包括存储器主机的分布式存储系统。每个存储器主机包括 非瞬态存储器和网络接口控制器,其与存储器通信并且服务来自客户端的直接存储器访问 请求。存储器通过远程直接存储器访问从与存储器主机通信的每个客户端接收数据传送 率。每个存储器主机还包括与存储器和网络接口控制器通信的数据处理器。数据处理器执 行主机进程,该主机进程读取每个所接收的客户端数据传送率,确定针对每个客户端的节 流数据传送率,并且将每个节流数据传送率写入到由客户端通过远程直接存储器访问可访 问的非瞬态存储器。
[0007] 本公开的实现方式可以包括以下可选特征中的一个或多个特征。在一些实现方式 中,在与客户端建立通信连接之后,数据处理器实例化非瞬态存储器中用于接收针对该客 户端的数据传送率的第一存储器区域和非瞬态存储器中用于写入针对该客户端的节流率 的第二存储器区域。主机进程在确定针对每个客户端的节流率之前,可以周期性地读取针 对每个客户端的第一存储器区域。在一些示例中,主机进程向网络接口控制器注册存储器 的远程直接内容可访问的区域的集合。主机进程响应于接收来自客户端的连接请求,主机 进程与客户端建立能够远程直接存储器访问的连接。当客户端在一段时间期间未能坚持其 对应的节流数据传送率时,主机进程可以单方面地破坏与客户端的连接。
[0008] 在一些实现方式中,在客户端与存储器主机之间的阈值数据量的每次传送之后, 存储器接收客户端的客户端数据传送率。在从任何一个客户端接收客户端数据传送率之 后,主机进程可以确定每个客户端的节流数据传送率。
[0009] 主机进程可以接收隔离配置,该隔离配置提供针对存储器主机的带宽容量和针对 客户端的带宽预留的列表。每个带宽预留预留针对客户端的阈值数据传送率。主机进程基 于隔离配置来确定客户端的节流数据传送率。存储器主机的带宽容量可以包括用于服务与 带宽预留相关联的存储器访问请求的预留带宽和用于服务与任何带宽预留不关联的存储 器访问请求的弹性带宽。当针对客户端的任何相关联的带宽预留而确定客户端的节流数据 传送率时,主机进程可以分配等于跨主机进程的那些带宽预留的等分共享的预留带宽和分 配关于与存储器主机通信的所有客户端的弹性带宽的等分共享。此外,当确定客户端的节 流数据传送率时,主机进程可以将与客户端的一个或多个带宽预留相关联的未使用的带宽 重新分布到其他客户端。
[0010] 在一些实现方式中,主机进程将隔离等级与客户端相关联。隔离等级具有一个或 多个相关联的存储器访问请求。主机进程基于存储器主机的带宽容量,确定针对每个客户 端的所分配的带宽;基于针对每个客户端的所分配的带宽,确定针对每个客户端的每个隔 离等级的所配给(allot)的带宽;基于对应的隔离等级的带宽,确定针对与每个隔离等级 相关联的每个存储器访问请求的带宽;以及基于以下中各项的至少一项,确定针对每个客 户端的节流传送率:客户端的所分配的带宽;针对每个隔离等级的所配给的带宽;或者针 对每个存储器访问请求的带宽。
[0011] 分布式存储系统可以包括与存储器主机通信的管理器(curator)。管理器配给针 对文件的数据块的存储器主机中的存储器。响应于来自与存储器主机和管理器通信的客户 端的存储器访问请求,管理器将文件描述符返回到客户端,该文件描述符映射存储器主机 上的文件的数据块以用于存储器主机上的数据块的远程直接存储器访问。文件描述符包括 针对文件的每个数据块的客户端密钥。每个客户端密钥允许对其存储器主机上的对应的数 据块的访问。管理器拒绝对未能在一段时间期间坚持其对应的节流数据传送率的客户端的 文件描述符的访问。
[0012] 本公开的另一方面提供一种分布式存储系统中的隔离的方法。该方法包括通过远 程直接存储器访问将来自与存储器通信的每个客户端的数据传送率接收到非瞬态存储器 中并且将每个所接收的客户端数据传送率读取到与非瞬态存储器通信的数据处理器中。该 方法还包括确定针对每个客户端的节流数据传送率和将每个节流数据传送率从数据处理 器写入到由客户端通过远程直接存储器访问可访问的非瞬态存储器。该方面可以包括以下 可选特征中的一个或多个特征。
[0013] 在一些实现方式中,该方法包括在与客户端建立通信连接之后,实例化非瞬态存 储器中用于接收针对该客户端的数据传送率的第一存储器区域和非瞬态存储器中用于写 入针对该客户端的节流率的第二存储器区域。该方法还可以包括在确定针对每个客户端的 节流率之前,周期性地读取针对每个客户端的第一存储器区域。该方法可以包括向网络接 口控制器注册存储器的远程直接存储器可访问的区域的集合,并且响应于接收来自客户端 的连接请求而与客户端建立能够远程直接存储器访问的连接。如果客户端在一段时间期间 未能坚持其对应的节流数据传送率,则该方法可以包括单方面地破坏与客户端的连接。
[0014] 该方法可以包括在客户端与存储器之间的阈值数据量的每次传送之后,将客户端 的客户端数据传送率接收在存储器中。此外,该方法可以包括在从任何一个客户端接收客 户端数据传送率之后,确定每个客户端的节流数据传送率。
[0015] 在一些实现方式中,该方法包括接收隔离配置,该隔离配置提供针对存储器主机 的带宽容量和针对客户端的带宽预留的列表,并且基于隔离配置而确定客户端的节流数据 传送率。每个带宽预留预留针对客户端的阈值数据传送率。存储器主机的带宽容量可以包 括用于服务与带宽预留相关联的存储器访问请求的预留带宽和用于服务与任何带宽预留 不关联的存储器访问请求的弹性带宽。
[0016] 确定客户端的节流数据传送率的步骤可以包括:针对客户端的任何相关联的带宽 预留,分配等于跨分布式存储系统的存储器主机的那些带宽预留的等分共享的预留带宽和 分配关于与存储器主机通信的所有客户端的弹性带宽的等分共享。该步骤还可以包括将与 客户端的一个或多个带宽预留相关联的未使用的带宽重新分布到其他客户端。
[0017] 在一些实现方式中,该方法包括将具有一个或多个相关联的存储器访问请求的隔 离等级与客户端相关联,并且基于存储器主机的带宽容量,确定针对每个客户端的所分配 的带宽;基于针对每个客户端的所分配的带宽,确定针对每个客户端的每个隔离等级的所 配给的带宽;基于对应的隔离等级的带宽,确定针对与每个隔离等级相关联的每个存储器 访问请求的带宽;以及基于以下各项中的至少一项,确定针对每个客户端的节流传送率: 客户端的所分配的带宽、针对每个隔离等级的所配给的带宽或者针对每个存储器访问请求 的带宽。该方法可以包括接收具有客户端存储器访问请求的密钥以接收对存储器中的数据 的访问。
[0018] 在附图和以下描述中阐述本公开的一个或多个实现方式的细节。其他方面、特征 和优点将从说明书和附图并且从权利要求书而显而易见。
【附图说明】
[0019] 图1A是示例性分布式存储系统的示意图。
[0020] 图1B是具有由管理器所管理的存储器主机单元的示例性分布式存储系统的示意 图。
[0021] 图1C是分布式存储系统的示例性单元的示意图。
[0022] 图ID是与客户端交互的示例性存储器主机的示意图。
[0023] 图2A是用于分布式存储系统的示例性管理器的示意图。
[0024] 图2B是分成复制的条纹的示例性文件的示意图。
[0025] 图2C是示例性文件描述符的示意图。
[0026] 图3A是建立客户端与示例性分布式存储系统的存储器主机之间的连接的示意 图。
[0027] 图3B是将存储器访问请求发送给示例性分布式存储系统的存储器主机的客户端 的示意图。
[0028] 图4A是不例性应用编程接口的不意图。
[0029] 图4B是将数据写入到存储在分布式存储系统中的文件的示例性事务的示意图。
[0030] 图4C是读取来自存储在分布式存储系统中的文件的数据的示例性事务的示意 图。
[0031] 图4D是读取和写入示例性分布式存储系统中的数据的客户端的示意图。
[0032] 图5是用于分布式存储系统中的隔离的方法的操作的示例性布置的示意图。
[0033] 各附图中的相同参考标记指代相同元件。
【具体实施方式】
[0034] 参考图1A-1C,在一些实现方式中,分布式存储系统100包括松散耦合的存储器主 机110、110a-n(例如,计算机或者服务器),每个具有与可以被用于高速缓存数据的存储资 源114 (例如,存储器、闪速存储器、动态随机存取存储器(DRAM)、相变存储器(PCM)和/或 磁盘)通信的计算资源112(例如,一个或多个处理器或者中央处理单元(CPU))。重叠在存 储资源114上的存储抽象(例如,键/值存储或者文件系统)允许一个或多个客户端120、 120a-n的存储资源114的可扩展的使用。客户端120可以通过网络130与存储器主机110 通信(例如,经由RPC)。
[0035] 单侧分布式存储系统100可以消除对用于对响应于来自客户端120的远程过程调 用(RPC)的任何服务器作业的需要以存储或者检索其对应的存储器主机110上的数据312, 并且作为替代可以依赖于处理远程请求122的专用硬件。"单侧"是指在存储器主机110上 处理的大部分请求可以以硬件而不是执行在存储器主机110的CPU112上的软件完成的方 法。不是使存储器主机11〇(例如,服务器)的处理器112执行将对应的存储资源114(例 如,非瞬态存储器)的访问输出给执行在客户端120上的客户端进程的服务器进程,客户端 120可以通过存储器主机110的网络接口控制器(NIC) 116直接访问存储资源114。换句话 说,在不要求执行在计算资源112上的任何服务器进程的例程的执行的情况下,执行在客 户端120上的客户端进程可以直接与一个或多个存储资源114对接。这提供单侧分布式存 储架构,其提供相对高吞吐量和低延迟,这是因为客户端120可以在不与存储器主机110的 计算资源112对接的情况下访问存储资源114。这具有将典型的双侧分布式存储系统承载 的存储114和CPU周期的要求解耦的作用。无论在该存储器主机110上是否存在空闲CPU 周期,单侧分布式存储系统100都可以利用远程存储资源114 ;此外,由于单侧操作不竞争 服务器CPU资源112,因而甚至当存储器主机110以高CPU利用运行时,单侧系统可以利用 非常可预测的低延迟服务高速缓存请求122。因此,单侧分布式存储系统100允许比传统双 侧系统更高集群存储114和CPU资源112二者的利用。
[0036] 在一些实现方式中,分布式存储系统100包括存储逻辑部分102、数据控制部分 104和数据存储部分106。存储逻辑部分102可以包括事务应用编程接口(API)400(例如, 单侧事务系统客户端库),其负责经由单侧操作访问底层数据。数据控制部分104可以利用 任务管理对存储资源114的分配和访问,所述任务诸如分配存储资源114、向对应的网络接 口控制器116注册存储资源114、建立客户端120与存储器主机110之间的(一个或多个) 连接、处置机器故障的情况中的错误等。数据存储部分106可以包括松散耦合的存储器主 机 110、110a-n。
[0037] 在一些实现方式中,分布式存储系统100将数据312存储在动态随机存取存储器 (DRAM) 114中并且经由能够远程直接存储器访问(RDMA)的网络接口控制器116来服务来 自远程主机110的数据312。网络接口控制器116(还被称为网络接口卡、网络适配器或者 LAN适配器)可以是计算机硬件部件,其将计算资源112连接到网络130。网络接口控制器 116使用诸如以太网、Wi-Fi或者令牌环的特定物理层(0SI第1层)和数据链路层(第2 层)实现通信电路。这提供针对全网络协议栈的基础,其允许相同LAN上的小计算机组之 间的通信和通过诸如因特网协议(IP)的可路由协议的大型网络通信。存储器主机ll〇a-n 和客户端120
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1