CN106233276A - 网络可访问块存储装置的协调准入控制 - Google Patents

网络可访问块存储装置的协调准入控制 Download PDF

Info

Publication number
CN106233276A
CN106233276A CN201580019702.7A CN201580019702A CN106233276A CN 106233276 A CN106233276 A CN 106233276A CN 201580019702 A CN201580019702 A CN 201580019702A CN 106233276 A CN106233276 A CN 106233276A
Authority
CN
China
Prior art keywords
speed
storage
side component
client side
server
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.)
Granted
Application number
CN201580019702.7A
Other languages
English (en)
Other versions
CN106233276B (zh
Inventor
M·S·奥尔森
M·J·布鲁克
B·A·霍克斯
J·M·汤普森
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.)
Amazon Technologies Inc
Original Assignee
Amazon Technologies Inc
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 Amazon Technologies Inc filed Critical Amazon Technologies Inc
Publication of CN106233276A publication Critical patent/CN106233276A/zh
Application granted granted Critical
Publication of CN106233276B publication Critical patent/CN106233276B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • 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
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • 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
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage 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
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

在存储服务的特定服务器处实现的第一块存储装置处在某一时间段期间期望的工作请求的估计速率超出所述第一装置的规定速率。在所述存储服务的客户端侧组件处,识别不同的存储服务器,在所述服务器处,预期在所述时间段期间指向到第二块存储装置的工作请求的所述速率小于所述第二装置的规定速率。所述第一装置的至少一个准入控制参数被修改来使得所述第一存储服务器能够以超出所述第一装置的规定速率的速率接受工作请求。

Description

网络可访问块存储装置的协调准入控制
背景技术
一些主要的技术组织正投资对出售“软件即服务”的技术进行构建。这种服务向客户端或订户提供对计算和/或存储资源(例如,提供块级装置接口或web服务接口的存储装置)的访问。在多层电子商务系统内,可将不同类型的资源的组合诸如整个物理或虚拟机、CPU、存储器、网络带宽或I/O容量等分配给订户和/或他们的应用。例如,可以使在存储服务处实现的块级存储装置从通过另一服务实现的一个或更多个物理或虚拟机可访问。
向客户端提供服务的每个系统都需要保护自己免受有可能使所述系统过载的服务请求的压溃负载。一般来说,如果系统不能够为它接收的客户端请求的某一部分提供期望质量的服务,所述系统被认为是处于“过载”状态。过载系统施加的常见解决方案包括拒绝对客户端的服务或对一定量的进入请求进行节流直到系统摆脱过载状态。例如,可在一些实施方案中的存储服务器处按每个存储装置水平采用这种技术。
一些当前系统通过以下方式来避免过载情形:将请求速率与固定全局阈值进行比较,并且一旦超过该阈值,选择性拒绝对客户端的服务。然而,在以变化的、不可预测的速率接收不同类型的请求的系统中,并且对于所述系统,满足请求所需的工作负荷在至少一些情况下也是变化的和不可预测的,定义有意义的(更不用说提供可接受性能的)单个全局阈值是困难的(如果不是不可能的话)。虽然许多服务可能已被设计成在客户端请求随着时间均匀分布时起到最好作用,但是实际上很少遇到工作分布的这种时间均匀性。希望实现和保持高水平的客户满意度的服务提供者可能需要实现以更完善的方式处理时间和空间工作负荷变化的技术。
附图说明
图1图示根据至少一些实施方案的实现块级存储服务的系统。
图2图示根据至少一些实施方案的利用工作令牌桶调度操作的准入控制机制的方面。
图3图示根据至少一些实施方案的令牌桶的示例配置性质,所述令牌桶可用于实现各种类型的准入控制策略。
图4图示根据至少一些实施方案的在服务的后端存储服务器与所述服务的客户端侧组件之间的示例准入控制交互。
图5图示根据至少一些实施方案的准入控制元数据的示例,所述准入控制元数据可用于包括多个分区的虚拟卷。
图6图示根据至少一些实施方案的准入控制有关的操作的示例,所述操作针对可附接到多个计算实例的块级装置。
图7是图示根据至少一些实施方案的操作的方面的流程图,所述操作可被执行来实现针对块级存储装置的准入控制。
图8图示根据至少一些实施方案的系统,其中在存储服务的客户端侧组件之间的工作负荷有关的消息可由服务器侧组件重定向。
图9图示根据至少一些实施方案的分布策略的示例参数,所述分布策略可用于重定向工作负荷有关的消息。
图10图示根据至少一些实施方案的通过存储服务的客户端侧组件和服务器组件两者重定向工作负荷有关的消息的示例。
图11图示根据至少一些实施方案的可在存储服务的客户端侧组件处维持的联合群组数据库的示例元素。
图12是图示根据至少一些实施方案的操作的方面的流程图,所述操作可被执行来使用重定向消息实现存储工作负荷管理。
图13是图示可在至少一些实施方案中使用的示例计算装置的框图。
虽然在本文中通过针对若干实施方案和说明性附图以示例的方式描述了实施方案,但是本领域那些技术人员应认识到,实施方案并不限于所描述的实施方案或附图。应理解,附图和对其的详细描述并非意图将实施方案限于所公开的特定形式,而是相反地,其意图在于涵盖落入由所附权利要求书限定的精神和范围内的全部修改、等效物以及替代方案。本文中使用的标题都仅用于组织目的,并且并不意图用于限制说明书或权利要求书的范围。如本申请全文中所使用,词语“可”是以准许意义(即,意味着具有可能),而不是强制意义(即,意味着必须)使用的。类似地,词“包括(include、including和includes)”意味着包括,但不限于。
具体实施方式
描述了针对在存储系统处的工作负荷管理的方法和设备的各种实施方案,包括涉及网络可访问块存储装置的协调准入控制的技术和涉及重定向工作负荷消息的技术。术语“准入控制”和“节流”在本文中可以同义方式用于表示被执行来限制速率的操作,接收的工作请求(诸如指向到存储服务的读取或写入请求等)以所述速率被接受用于实现,而不是,例如,被推迟或拒绝。在执行准入控制中涉及的软件和/或硬件实体组可共同称为“准入控制器”。在至少一些实施方案中,准入控制技术可用于提供者网络环境内实现的存储服务的一个或更多个组件处。由诸如公司或公共部门组织等实体设立来向分布组的客户端提供可经由互联网和/或其他网络访问的一个或更多个网络可访问服务(诸如各种类型的基于云的数据库、计算或存储服务)的网络在本文中可称作提供者网络。服务中的一些可用于构建更高级别服务:例如,计算、存储或数据库服务可用作内容分布服务或流数据处理服务的构建块。
提供者网络的服务中的至少一些可被封装成供客户端使用的称为“实例”的服务单元:例如,通过虚拟化的计算服务例示的虚拟机可表示“计算实例”。计算装置(在所述计算装置处实现提供者网络的这种计算实例)在本文中可称为“实例主机”或在本文中更简称为“主机”。给定实例主机可包括若干计算实例,并且在特定实例主机处的计算实例集合可用于实现一个或更多个客户端的应用。在计算装置处,例如,使用基于磁盘的存储硬件和关联的软件的某一集合来实现逻辑存储装置诸如网络可访问存储服务的卷(或一个或更多个卷的部分),所述计算装置在本文中可称为“存储服务器”。给定存储服务器可托管一个或更多个客户端的存储装置(或存储装置的部分)。
根据一些实施方案,提供者网络的块存储服务可使得客户端能够创建或例示块存储装置诸如实现针对I/O的块装置程序接口的可安装块级卷等,并且能够以编程方式将一个或更多个块存储装置附接到计算实例来支持来自实例的联网的块级I/O操作(而不是,例如,文件级I/O操作)。在一个实施方案中,例如,块存储服务可暴露“CreateVolume(创建卷)”应用程序接口(API),从而使得客户端能够指定卷大小,以及各种其他参数诸如将要由块存储服务支持的规定吞吐量水平(以诸如块I/O操作/秒等单位表示)。在这种实施方案中可支持“附接卷(附接卷)”API来以编程方式将指定卷(或卷的一部分)附接到至少一个具有指定装置名称的指定计算实例。在一些实施方案中,在将块存储服务实现的给定卷附接到计算实例后,计算实例可正如它与本地驱动器交互一样与卷交互,例如,利用文件系统将卷格式化和/或将应用安装到卷上。因此,从计算实例的角度来看,块存储服务提供的卷可类似于原始未格式化的外部硬盘驱动器一样运转。
在一些实施方案中,可使用分层架构来实现一个或更多个提供者网络服务,所述分层架构包括与服务客户端交互的前端层和包括由前端层代表服务客户端访问的资源的后端层。可出于各种原因使用这种分层方式,例如,为了实现针对客户端数据的所需级别的安全性或隔离,为了支持后端处的实现灵活性等等。例如,块存储服务可包括后端层,所述后端层包括具有诸如磁盘等物理存储装置的许多存储服务器,以及在同一实例主机上运行的前端层,在所述实例主机处实施计算实例,在所述计算实例上实现利用块存储装置的客户端应用。前端层,其可(例如)包括虚拟化管理软件栈的组件(诸如管理操作系统实例的一个或更多个模块或管理程序),可拦截应用的读取和写入请求并且向永久存储读取或写入的数据的存储服务器发出对应的物理输入/输出(I/O)请求。在后端处的存储服务器在本文中也可称为存储服务的"服务器侧"组件(或服务器组件),而前端组件在本文中可称为“客户端侧”组件(或客户端组件)。在一些实施方案中,在前端层与后端层之间可建立至少两种类型的通信信道:“数据平面”通信信道和“控制平面”通信信道。数据平面信道可主要旨在从前端层向后端层提交存储请求以及接收对这种请求的响应。控制平面通信信道可主要旨在管理或配置有关的操作,例如,包括恢复有关的操作、响应于改变工作负荷的动态再配置等等。出于安全性和其他原因,在至少一些实施方案中可使用各自组的网络链路和装置和/或使用独立配置的虚拟网络来实现数据平面和控制平面信道。数据平面通信信道可能必须(例如)在将第一存储请求从前端的客户端侧组件传输到后端处的存储服务器之前建立。在至少一些实施方案中,如下文所述,预先存在的数据平面通信信道可(例如,使用捎带技术)用于在前端组件组中或在后端组件组中的重定向的工作负荷有关的信息,并且重定向的工作负荷有关的信息随后可用于调度或重新调度服务请求。
如先前所述,在一些实施方案中,客户端可(例如)在创建块存储装置时指示针对其块存储装置或卷的各种性能有关的偏好或要求。例如,客户端可指示卷的所需大小,或卷应被配置来支持的每秒I/O操作的数量(IOPS)。在一些实现方式中,块存储服务可基于客户端指示的卷大小来确定支持的最大IOPS水平。根据至少一些实施方案,块存储服务可支持规定工作负荷模型。在规定工作负荷模型中,工作请求可能被指向到的给定对象(诸如卷或卷的分区等)可以如此被设置或配置使得它通常能够支持多达具有对于工作请求来说可接受的响应时间的工作请求的特定速率(“规定吞吐容量”)。术语“吞吐容量”在本文中用于表示资源以给定速率完成工作请求(诸如在存储资源的情况下的读取或写入)的能力。吞吐容量可以工作操作/秒来表示,诸如在存储资源的情况下的逻辑或物理IOPS。为了支持规定工作负荷模型,可使用各种类型的准入控制技术中的任何技术,诸如其中通过令牌桶内的工作令牌的可用性(如下文所述)来对可用吞吐容量建模的技术。在至少一些实施方案中可使用不利用工作令牌的其他准入控制技术。
在至少一些实施方案中,在存储服务处也可或替代地支持非规定的工作负荷模型。例如,一个卷V1可具有规定IOPS设置P1,而同一存储服务的另一个卷V2可不具有规定IOPS设置。在这种实施方案中,服务可尝试为V1预留或保留估计足够满足规定IOPS速率P1的资源,并且可为V2仅实现尽力的调度而无需尝试满足预先确定的IOPS目标。在一个实施方案中,可针对规定的卷和非规定的卷向客户端收取不同的费率-例如,因为大量组的资源可能预先分配给规定的卷,所以规定的卷的费率可高于非规定的卷。在至少一些实施方案中,本文所述的工作负荷管理技术可被施加用于任一类型的工作负荷模型(规定的或非规定的)。
根据在存储服务处使用的规定工作负荷模型,如上指出的,可为每个块存储装置分配足够的资源来支持对应的吞吐量水平。例如,考虑具有计算实例CI1的客户端C1,块存储卷V1和V2将要附接到所述计算实例。如果客户端请求(例如,在卷创建时)针对卷V1的规定IOPS水平(PIOPS)P1和针对卷V2的PIOPS P2,那么存储服务可识别后端存储服务器,其具有能够支持所需I/O速率的物理存储装置(和网络装置)以及能够处理针对所需I/O速率的请求处理的CPU。在一些实现方式中,在后端服务器处的准入控制机制通常可施行针对卷的PIOPS极限。例如,针对V1,可建立具有P1令牌每秒的再填充速率的令牌桶,每次接受I/O请求从所述令牌桶消耗一个令牌。类似地,可针对V2建立具有P2令牌每秒的再填充速率的令牌桶,每次接受I/O请求从所述令牌桶消耗一个令牌。如果在后端存储服务器处接收到I/O请求而没有剩余任何令牌,那么可将请求排队或拒绝。在一些实现方式中,可独立处理针对不同类别的工作请求的准入控制-例如,可为读取和写入设置不同的令牌桶。
根据V1和V2被配置用于的应用的种类,指向V1和V2的I/O工作负荷的变化仍可随着时间的推移发生,这可导致高于所期望的I/O响应时间(或更高的I/O拒绝率)。如果I/O操作在给定时间间隔诸如像1秒期间以高于P1的速率被指向到V1,那么准入控制器可能必须推迟或拒绝操作中的一些。在一些情形下,在至少一些时间间隔内,两个卷的组合IOPS可保持低于它们的组合规定速率,但是卷中的一个的请求速率可能超出该卷的规定极限。例如,如果P1和P2均为1000IOPS,使得它们的组合PIOPS为2000,那么在给定秒期间,针对V1的I/O请求的速率可为1200(高于其规定水平)并且指向到V2的I/O请求的速率可为500(低于其规定水平)。在至少一些实施方案中,有可能分析在存储服务的客户端侧组件处(例如,在应用运行的实例主机处)的读取和写入请求模式并且以高准确度预测I/O请求速率的变化。在这种实施方案中,客户端侧组件可与后端存储服务器协作来修改用于至少临时接受针对卷的工作请求的准入控制参数(如下文所述),使得可在足够资源可用的情况下,在某些时间段内针对一个或更多个卷支持高于规定IOPS水平的请求速率。在上文示例中,在令牌桶用于准入控制的实施方案中,在V1的存储服务器能够处理1250IOPs的情况下,客户端侧组件可临时增大V1的桶的再填充速率(例如,增大到1250令牌每秒,使得可以相对容易地处理1200IOPS)并且减小V2的桶的再填充速率(例如,减小到750令牌每秒)。或者,代替调整再填充速率,可仅从V2的桶“借用”或转移某一数量的令牌并且存入V1的桶中。以此方式,只要足够资源可用,就可以做出各种类型的临时补偿准入控制参数调整来增强存储服务的整体响应性。从中借用容量的卷或装置可称为“出借”或“捐赠”卷或装置,而在此处期望高于规定工作负荷的卷或装置可称为“借用”或“接受”卷或装置。在一些实施方案中,有可能从若干不同的出借卷V2、V3...(期望其中的每个具有低于规定工作负荷水平)借用容量来处理V1的增大的需求。在一个实施方案中,即时V1的增大的需求可以仅部分履行(例如,如果在V1的期望工作负荷与规定速率之间的差异是200IOPS,但是可以从V2、V3...等一共借用仅100IOPS),仍可从一个或更多个出借卷借用容量来帮助管理V1的工作负荷。为了简化介绍,以下描述的大部分着重于涉及单个出借卷、单个借用卷和在借用卷处的额外需求的完全履行的情形;然而,在各种实施方案中,也可支持多个出借方、多个借用方和/或部分履行。
在至少一些实施方案中,可针对在多租户存储服务处实现的多个块级存储装置中的每个来建立各自组的准入控制参数(例如令牌桶再填充速率)以实现各自的规定工作负荷速率。服务的客户端侧组件可生成工作请求的速率的估计值,所述工作请求是被期望在某一时间段期间指向到第一存储服务器处实现的第一块级存储装置的至少一部分。如果到第一装置的工作请求的期望速率超出第一装置的规定工作负荷,那么客户端侧组件可尝试识别第二块级存储装置(例如,在不同的存储服务器处或在同一存储服务器处),在所述第二块级存储装置处,在所述时间段期间期望的工作负荷低于规定工作负荷。如果可以找到这种第二装置,那么在至少一些实施方案中,客户端侧组件可确定(例如,通过与第一存储服务器通信)第一存储服务器是否具有足够容量来接受第一装置的额外工作负荷。由于存储服务器在许多情况下可为多租户(即,块存储装置可在代表若干不同客户端或实例的给定服务器上实现,并且块装置中的每个可能需要支持各自的PIOPS速率),存储服务器可能不能够一直处理高于PIOPS水平的过量负荷。如果存储服务器可以处理增大的负荷中的至少一些,那么客户端侧组件可开始修改将要至少在关注的时间段期间施加到第一和第二装置的准入控制参数,使得针对第一装置可以接受比规定水平更高的工作负荷,并且将第二装置限制于比其规定水平更低的工作请求速率。(在一个实施方案中,在一些情况下,例如,如果在第二装置处的期望工作负荷水平大体上低于第二装置的规定水平,那么可修改仅与第一装置相关的参数)。在一些实施方案中,在时间段结束后,可将准入控制设置复位回到其原始值。在一些实施方案中,可在某一复位时间间隔上逐渐将准入控制设置复位,例如,根据衰减函数;在其他实施方案中,阶梯函数可用于瞬时或接近瞬时改变准入控制设置的值。
在许多情况下,借用和出借装置可由同一客户端账户拥有或分配到同一客户端账户或链接的客户端账户,或可以其他方式逻辑上关联(例如,如果它们用于相关的应用)。因此,在至少一些实施方案中,当确定是否“借用”一个装置的容量来支持在另一个装置处的高于规定工作负荷时,存储服务的客户端侧组件可使用元数据诸如客户端账户信息,或关于装置用于的应用的种类的信息。
类似技术也可用于以下实施方案中:涉及的装置中的至少一个不具有规定IOPS设置-而是,例如,内部工作负荷速率目标可与装置中的每个关联(例如,基于测量的工作负荷趋势),并且容量可借自与另一个装置相比不太繁忙的装置并且借给两者中更繁忙的装置。如先前所述,在块装置用于的应用在计算服务的实例主机处的计算实例上运行的一些实施方案中,客户端侧组件可为在实例主机处的虚拟化管理软件栈的部分。在至少一个实施方案中,客户端侧组件可在除了实例主机以外的装置处运行-例如,在前端实例主机与后端存储服务器之间的存储服务的中间节点处。
在一些实施方案中,块存储装置诸如卷可跨多于一个后端存储装置或多于一个后端存储服务器分区或分布。例如,这种分区可被实现来支持无法仅在单个存储服务器处或在单个存储装置处容纳的非常大的卷和/或非常高的吞吐量水平。在一个示例情形下,20兆兆字节卷可被分成五个4兆兆字节分区,可使用在各自的存储服务器处的磁盘组存储其中的每个。在支持分区的卷的一些实施方案中,分区的细节或甚至卷分布在若干分区中的事实可能不必透露给请求卷的客户端。从客户端的角度来看,可能显示配置了具有单个规定工作负荷水平的单个卷。存储服务的前端和后端组件可(例如)通过确定应配置多少个分区和应在哪个存储服务器/装置存储分区来实现分区。大“虚拟”卷的规定吞吐容量可被分布在分区中。例如,如果针对10000IOPS已内部供应了20兆兆字节卷(从客户端的角度来看),那么五个4兆兆字节卷中的每个可被配置用于2000PIOPS。例如,除了在卷级或代替卷级,在一些这种实施方案中,准入控制可在分区级执行。在一些实现方式中,可针对分区中的每个采用单独的令牌桶。在这种示例情形下,如果预期在某一时间段期间分区中的一个或更多个的工作负荷上升高于2000IOPS,并且预期一个或更多个其他分区的工作负荷低于2000水平,那么存储服务的客户端侧组件可调整不同分区的PIOPS水平。为了支持期望的工作负荷水平,例如,被期望是更繁忙的分区的令牌再填充速率可增大,而被期望是较不大量使用的分区的令牌再填充速率可降低。因此,分区级“借用”和“出借”吞吐容量可在这种实施方案中执行,尽管类似准入控制参数调整也可在卷级实现。
在一个实施方案中,块级存储装置诸如卷可仅由单个计算实例例如使用先前所述的“附接卷”API的等效物附接。在其他实施方案中,单个块级装置或分区可从潜在地在不同实例主机处例示的多个计算实例附接。一般来说,在各种实施方案中,给定存储服务器或存储装置可从M个不同的客户端侧组件访问,并且相反地,存储服务的给定客户端侧组件可能能够访问N个不同的存储服务器。
在各种实施方案中,为了接收和响应于来自客户端侧组件的存储请求,如先前所述,可在存储服务的客户端侧组件与后端存储服务器之间建立数据平面通信信道。在至少一些实施方案中,可在合作客户端侧组件之间使用经由后端服务器的消息重定向,例如,在预先存在的数据平面通信信道上交换可有助于调度存储请求的工作负荷有关的信息。从其他合作客户端侧组件接收的工作负荷信息(例如,捎带在无论如何将发送的数据平面消息上)可在给定客户端侧组件处以非常低的开销收集,并且随后用于本地改善存储请求调度(或重新调度)决策。例如,代表存储服务的单个终端用户客户(或逻辑上关联的客户组)例示的客户端侧组件的群组可共同决定使用重定向消息来合作工作负荷管理任务诸如尝试使群组的一些类型的存储操作优先于其他操作,或尝试相对于群组成员中的存储资源使用强加某一公平水平。这种协作或合作客户端侧组件的群组在本文中可称为客户端侧“联合群组”。在一些实施方案中,协作后端服务器组件的群组也可或替代使用重定向消息来交换工作负荷信息,并且使用这种信息来增强它们自己的后端准入控制决策的质量。
根据使用这种重定向技术的一个实施方案,多租户网络可访问存储服务的第一客户端侧组件C1可确定其(即,C1的)存储工作负荷的度量M1。例如,这种度量可通过在特定时间间隔期间测量存储请求从C1朝向一个或更多个存储服务器指向的速率来获取。C1随后可经由预先存在的数据平面通信信道向服务后端的特定存储服务器S1传输度量M1。服务器S1可基于工作负荷度量分布策略的各种参数来识别度量M1应被指向到的一个或多个不同的客户端侧组件C2、C3...。在至少一些实施方案中,服务器S1可接收关于联合群组(工作负荷有关的信息应在其中分布)的合作客户端侧组件组的指导,例如,以来自客户端侧组件的控制平面消息的形式,或以其他数据平面消息的形式,或在其中由C1传输M1的同一数据平面消息中。
存储服务器S1可(例如)使用先前在S1与C2之间创建的不同的预先存在的数据平面通信信道向选定的第二客户端侧组件C2传输度量M1。在C2处,M1(以及经由类似的重定向消息从其他客户端侧组件收集的其他度量和C2自身的度量)可用于对C2的后续工作负荷做出调整。例如,基于C2看到的其想要合作的其他客户端侧组件处的工作负荷条件,C2可重新调度或延迟一个或更多个存储请求的提交(到S1或到其他服务器)。S1还可基于分布策略向其他客户端侧组件传输M1。类似地,C2可使用预先存在的数据平面通信信道向某一服务器传输其自己的度量M2,并且M2可经由重定向到C1和C2的联合群组的其他客户端侧组件被散播。在某一时间段上(例如,通过分布策略确定的),C1和C2的联合群组的不同成员可全部从彼此获取相对较新的工作负荷信息,并且可因此处于做出更明智的工作负荷调度决策的位置。
应注意,经由重定向来在联合群组成员中共享工作负荷数据以至少从群组整体的角度来看改善了群组的工作负荷调度决策的这种技术可无关于使用的准入控制技术而采用。例如,在一些实施方案中,工作负荷信息可经由重定向被共享并且用于请求调度目的,不管存储服务是否以先前所述的方式实现规定的IOPS。在一些实施方案中,先前所述的关于客户端侧组件在存储服务器中逻辑上转移I/O容量单元或临时修改准入控制参数的技术可与重定向技术组合。例如,客户端侧组件仍可基于服务器工作负荷水平的期望来调整针对存储服务器的准入控制设置,而同时使用从其他合作客户端侧组件获取的工作负荷信息来修改其自己的提交的服务请求的调度。在一些实施方案中,代替或除了使用重定向技术以外,存储服务的位于不同实例主机处的客户端侧组件可直接与彼此通信,例如,共享预期工作负荷水平或其他元数据。在一个实施方案中,后端存储服务器还可或替代直接在它们中共享工作负荷信息用于准入控制参数修改。在至少一个实施方案中,存储服务器可继续利用准入控制参数来对工作负荷进行节流,即使正在客户端侧组件处使用工作负荷度量来以合作方式修改客户端工作负荷。因此,在一些实施方案中,在存储服务器处做出的准入控制决策实际上可用于改写客户端侧组件的工作负荷重新调度尝试。
在存储服务器被配置来重定向接收的工作负荷信息的实施方案中,包括许多不同参数的度量分布策略可用于指导重定向过程。例如,这种参数可管理(a)向其他客户端侧组件传播度量的时间,(b)用于选择度量应被发送到的客户端侧组件的准则,和/或(c)度量将要被重定向到的客户端侧组件的数量。在一些实施方案中,可使用(例如)以类似于用于在许多基于“闲聊”的协议中的信息传播的方式从联合群组的成员中随机选择来选择度量的目的地。在至少一些实施方案中,策略可指示将要用于将度量传输到选定的目的地上的机制:例如,是否或在什么条件下应将度量捎带在包含请求的数据块或对写入请求的响应的网络消息上,或是否应在不包含数据存储有效负荷或响应的消息中发送度量。在一个实施方案中,例如,来自客户端侧组件的度量的初始传输和度量的再传输两者可涉及将度量捎带在被生成用于正常数据平面流量的网络消息上。
在至少一些实施方案中,客户端侧组件联合群组的不同成员在某一应用或应用组的情境下可具有不同的角色,这导致来自某一组件C1的存储请求可被视为具有比另一个组件C2的存储请求更高的重要性。例如,C1可代表应用节点集群的主要或主组件提交存储请求,而C1也可代表集群的工作者节点提交存储请求。在这种情形下,相对权重或优先级可与不同群组成员的请求关联,并且权重信息可在群组成员中传播,使得请求调度决策可以在考虑到不同组件的相对重要性的情况下做出。
示例系统环境
图1图示根据至少一些实施方案的实现块级存储服务的系统。如图所示,在所描绘实施方案中,许多不同的块存储装置120(诸如整个卷或卷的分区)可在各个后端存储服务器110处被配置来支持由在各个计算实例140处运行的应用发出的读取和写入请求。例如,块存储装置120A和120B位于存储服务器110A处,而块存储装置120C和120D位于存储服务器110B处。计算实例140A和140B在实例主机145A处实现,而计算实例140C和140D在实例主机145B处运行。
在计算实例140上运行的应用发出针对使用块存储装置120实现的存储对象(诸如文件或文件系统等)的读取和/或写入请求122(在本文中也称为客户端读取/写入请求)。在给定实例主机145处的应用读取/写入请求122可在实例主机处存储服务的本地客户端侧组件150处被捕获或拦截,并且客户端侧组件150可向存储服务器发出对应的后端I/O请求123。因此,在这种实施方案中,客户端侧组件可被认为是在计算实例与逻辑上附接到计算实例的存储装置之间的中介。后端I/O请求可被认为是类似于客户端读取/写入请求的转换。例如,来自计算实例140A和140B的客户端读取/写入请求122A由实例主机145A处的客户端侧存储服务组件150A转换成后端I/O请求123A和123B。类似地,来自实例主机145B处的计算实例140C的客户端读取/写入请求122C和122D分别由本地客户端侧组件150B和150C处理。
应注意,至少在一些实现方式中,给定客户端读取或写入请求122可能不一定导致对应的后端I/O请求123;而是,在这种实现方式中,一些客户端读取/写入请求可通过客户端侧组件150与其他请求合并或分裂成更小的请求,使得后端I/O请求的数量可能不完全匹配客户端读取/写入请求。客户端侧组件在一些实施方案中可负责组合和/或分裂读取/写入请求,并且还可执行缓存或其他操作。在一些实现方式中,客户端侧组件150各自可包括一个或更多个执行进程或线程。在一些实施方案中,单个客户端侧组件150可在给定实例主机145处被例示,并且这种单片式客户端侧组件150可负责处理针对若干不同计算实例和/或针对附接到实例的若干不同块存储装置的读取和写入请求。在其他实施方案中,单独的客户端侧组件150可负责处理针对给定计算实例或针对给定附接块存储装置的块存储请求。在所描绘实施方案中,客户端侧组件150在其实例主机145处的虚拟化管理软件栈170内并入(例如,在专门用于管理操作而不是客户端应用的专用操作系统实例处,或在管理程序处):例如,客户端侧组件150A是在实例主机145A处的虚拟化管理软件栈(VMSS)170A的子组件,而客户端侧组件150B和150C是在实例主机145B处的虚拟化管理软件栈170B的部分。在其他实施方案中,块存储服务的客户端侧组件可不在虚拟化管理软件栈处实现;而是,例如,它们可在计算实例140处实现,或在一些情况下,在接受来自虚拟化管理软件栈的写入请求和将请求重定向到存储服务器的路由中介处实现。
在图1所示的实施方案中,每个块存储装置120具有服务器侧准入控制参数(ACP)130的对应组,所述参数由存储服务器用于(例如)根据上文所述种类的规定工作负荷模型来确定是否接受、延迟或拒绝进入的后端I/O请求123。因此,服务器侧准入控制参数130A、130B、130C和130D分别施加到块存储装置120A、120B、120C和120D。另外,客户端侧组件150还可维持针对各个块存储装置120的客户端侧准入控制参数152的组,诸如分别用于块存储装置120A、120B、120C和120D的客户端侧准入控制参数152A、152B、152C和152D。在正常操作条件下,例如,当实际的读取/写入请求速率可以通过后端I/O请求以规定IOPS或低于规定IOPS处理时,在至少一些实施方案中,客户端侧准入控制参数可与服务器侧准入控制参数没有不同。在期望将更高速率的工作请求指向到一个或更多个块装置120的某些类型的操作条件下,可如下文所述修改在实例主机处、存储服务器处或在实例主机和存储服务器两者处的准入控制参数。在一些实现方式中,例如,客户端侧组件可针对某一组存储装置120临时修改其本地准入控制参数152,并且随后改写用于那些存储装置的准入控制参数130以匹配改变的客户端侧参数,以实现高于规定工作负荷水平。
客户端侧组件150可监视客户端读取/写入请求的时间和/或空间分布,并且可能够基于监视结果的分析来至少针对较短的时间段估计未来请求速率。至少在一些实施方案中,客户端侧组件150可能够比存储服务器更容易预期跨多个块装置或分区的工作负荷模式的对比趋势(例如,在一个卷处的工作负荷的增大至少大致上在时间上符合另一个卷的工作负荷的减小)。例如,这可以是以下情况:因为给定存储服务器通常可不在用于与位于其他服务器处的装置相关的工作请求的请求/响应路径中,而给定客户端侧组件可能可见针对多个后端存储装置的工作请求。在一些实施方案中,位于同一实例主机145处或不同实例主机处的客户端侧组件150可交换可用于做出准入控制决策的工作负荷信息或其他元数据,如箭头124A所示。类似地,在至少一个实施方案中,某一组存储服务器110也可交换工作负荷信息或其他元数据。在一些实施方案中,在存储服务器处从一个客户端侧组件接收的工作负荷信息可被重定向到其他客户端侧组件,如下文在图8的情境下论述,或在客户端侧组件处从一个存储服务器接收的工作负荷信息可被中继到另一个存储服务器。
在图1所示的实施方案中,如果给定客户端侧组件150估计针对某一块装置120在时间间隔期间预期的请求速率可需要高于规定水平的I/O速率,客户端侧组件可尝试找到可以从其“借用”吞吐容量的某一其他块装置来容纳预期的更高请求速率。在一些实施方案中,为了做出准入控制参数修改来处理请求速率的这种激增或突发,客户端侧组件150可能需要验证(a)某一块装置可以接受最大接受请求速率的临时降低并且(b)增大的请求速率受限所在的存储服务器具有足够容量来接受所述增大。如果可以满足这些条件,那么在所描绘实施方案中,受影响的装置的客户端侧准入控制参数可通常以此方式修改使得受影响的块装置的组的组合的允许请求速率保持在或保持低于它们的规定工作负荷水平的和,而在更繁忙装置处可以处理临时激增或突发。在工作令牌用于表示可用吞吐容量的实施方案中,例如,装置(在所述装置处期待额外请求)的令牌桶的再填充速率可上升,而令牌桶(在此处需求被期望是低的)的再填充速率可降低。
在一些实施方案中,来自若干不同块装置的闲置或多余容量可被借用来补偿在繁忙块装置处接受的工作请求速率的增大。例如,在图1所示的实施方案中,在装置120A处的I/O请求接受速率的较大增大可通过减小在装置120B、120C和120D处的最大接受速率来补偿。这种补偿技术的应用的更详细示例在图4中示出并且在下文描述。在一些实现方式中,对客户端侧准入控制参数做出的修改可临时改写入对应的服务器侧准入控制参数。在一些实施方案中,可由客户端侧组件修改的单个准入控制参数组可在实例主机145处或在存储服务器110处维持,而不是单独的服务器侧和客户端侧参数组。
使用令牌桶的准入控制
各种准入控制技术中的任何技术可在不同的实施方案中实现以确保以合理的响应性来处理针对存储操作的客户端规定工作负荷。图2图示根据至少一些实施方案的利用工作令牌桶调度操作的准入控制机制的方面。一般来说,这种机制可用于各种类型的实体的工作负荷管理,诸如存储对象、数据库表、数据库分区及类似物。在块存储服务的情境中,这种桶可由一个或更多个准入控制器280维持用于各个卷或卷分区,在各种实施方案中,在实例主机145处、存储服务器110处或在实例主机和存储服务器两者处。为便于呈现,在图2中示出使用单个令牌桶202的机制;然而,在一些实施方案中,可使用多个桶的组合,诸如一个桶用于读取操作并且不同桶用于写入操作。根据所述机制,出于准入控制目的设立的与特定工作目标102诸如块级存储装置(例如,卷或卷的部分)相关联的桶202(例如,逻辑容器,其可在至少一些实施方案中实现为在软件程序内的数据结构)可在桶初始化期间填充有令牌208的初始组,如经由箭头204A指示。在各种实施方案中,初始填充量可(例如)基于期望的工作负荷、服务水平协议、由拥有或管理对应的数据对象的客户端指定的规定预算或此类因素的某一组合来确定。对于某些类型的桶,在一些实施方案中,可将初始填充量设为零。在一些实现方式中,可将桶的初始填充量设为所述桶被配置用于的最大填充量。
在所描绘实施方案中,当在准入控制器280处接收到新工作请求270的指示(诸如在存储对象或数据库对象的情况下的读取请求或写入请求)时,准入控制器可尝试确定在桶202中是否存在某一数量N的令牌(其中N可大于或等于1,这取决于实现方式或配置参数)。如果该令牌数量可在桶中获得,那么工作请求270可立即被接受或准入以供执行,并且可从桶消耗或移除令牌(箭头210)。否则,在所描绘实施方案中,如果不存在N个令牌,那么工作请求270的接受可被推迟直到足够令牌变得可用。在所示情形下,接受工作请求270A已被接受,工作请求270B已被推迟,并且工作请求270C、270D和270E还在由准入控制器280考虑中。例如,当在桶202中足够令牌最终变得可用时,推迟的请求最终可被接受,如箭头232指示。在一些实施方案中,如果特定工作请求在某个超时窗口内未被接受,那么它可被准入控制器拒绝,如箭头230指示。在一些实现方式中,拒绝的工作请求可被重新提交或重试。在至少一些实施方案中,如果在工作请求由准入控制器280处理时在桶202中没有足够令牌可用,那么可立即拒绝而不是推迟工作请求。
如标记为204B的箭头所示,桶202可(例如)基于诸如与桶关联的再填充速率等配置参数来随着时间推移再填充或再装填,如下文参考图3所述。在一些实现方式中,令牌再填充操作可伴随消耗操作或与消耗操作在时间上紧密接近来执行-例如,在单个软件例程内,可消耗N个令牌用于准入请求,并且可基于再填充速率和自从桶最后一次被再填充已经过的时间来添加M个令牌。给定桶的再填充速率或令牌计数可由存储服务的客户端侧组件150修改,例如,以允许通常针对短时间间隔处理更高工作请求速率。(例如)使用配置参数,在一些实施方案中可对桶可保持的最大令牌数量设置限制,和/或对最小令牌数量设置限制。使用配置参数设置的各种组合,可在不同的实施方案中实现相当完善的准入控制方案。
在一个简单示例情形下,为了支持100工作请求每秒的稳定负荷,图2的桶202可被配置有100令牌的初始填充量、100令牌的最大可允许填充量和零令牌的最小值;可将N设置为1,并且可将再填充速率设置为100令牌每秒,并且出于再填充目的,可每10毫秒添加一个令牌(假定未超出最大填充量限制)。在工作请求270到达时,可针对每个工作请求消耗一个令牌。如果施加100工作请求每秒、在每秒期间均匀分布的稳定状态工作负荷,那么再填充速率和工作负荷到达速率可彼此平衡。在一些实施方案中,给出上文列出的桶参数的情况下,这种稳定状态工作负荷可无限持续。
扩展上文示例的情况下,如果到达速率和/或再填充速率不一致,可出现桶202在一些(例如,通常较小)时间间隔内保持为空的情形(例如,如果某一工作请求组快速连续消耗比再填充机制能够替换的更多的令牌)。在这种情况下,到达的工作请求可不得不被拒绝(或在延迟后重试)。为了在不引入大量延迟或高拒绝率的情况下处理工作负荷的临时非均匀性,可在不同的实施方案中采用各种技术,诸如由先前所述的客户端侧组件150临时修改准入控制参数。
图3图示了根据至少一些实施方案的令牌桶诸如桶202的示例配置性质302,该令牌桶可以用于实现各种类型的准入控制策略。在一些实现方式中,令牌桶可被实现为准入控制器280的存储器内数据结构,并且可根据需要写入永久性存储装置。这种数据结构可包括表示当前令牌填充量、何时填充量被最后一次修改和/或图3中所示的各种参数和策略的值的字段。
令牌消耗策略310可指示如何消耗令牌以供准入控制和消耗的时间(例如,是否将要在接受工作请求前消耗全部令牌,或是否可基于针对接受的请求执行的工作的实际量稍后消耗某些令牌)。在一些实施方案中,可从给定桶基于其消耗策略、针对不同类型的操作消耗不同数量的令牌-例如,I/O操作可被分类为“大”或“小”,并且可基于I/O操作的大小消耗不同量的令牌。在一些实施方案中,令牌消耗策略还可指定:空闲期间衰减参数,其指示如果对应的工作目标在某一时间内没有针对工作请求,是否(和以什么速率)将要从桶删除令牌;或空闲时转移参数,其指示如果令牌在某一时间间隔期间未被使用,是否应将令牌从一个桶转移到另一个桶(例如,从具有较少使用的卷的桶到具有更频繁使用的卷的桶)。在一个实施方案中,陈旧策略可用于消耗在指定时间间隔内未被消耗的令牌-例如,每个令牌可与有效寿命关联,在所述有效寿命后,令牌可能不再对准入控制目的有用。
在所描绘实施方案中,性质302可包括初始令牌填充量参数306,所述初始令牌填充量参数指示在启动或初始化时要将多少令牌置于桶中。令牌再填充策略参数314可指示将要以什么速率和/或在什么情况下将令牌添加到桶,例如,以帮助维持已对与桶关联的工作目标进行配置的工作速率。如先前所述,桶的参数中的一个或更多个可随着时间推移而改变-例如,默认再填充速率可施加到桶,但是为了容纳高于规定速率,可至少临时使用更高的非默认速率。最大填充量参数318可指示桶的最大容量和对应工作目标。在一些实施方案中,不同类型的操作可具有不同的准入控制规则(例如,读取可具有与写入不同的规则,或I/O可具有基于读取或写入的数据的量的不同规则)并且桶将要用于的操作的类型可在适用的操作类型参数320中指定。在至少一些实施方案中,可用于确定客户端因为使用桶的令牌将要被收取的金额的一个或更多个定价策略322可在桶性质中指示。在不同的实施方案中,可采用仅图3所示的示例参数的子集,而在其他实施方案中,可使用除图3中所示的那些以外的额外的桶配置参数。在至少一些实施方案中,针对图3所示的各种性质的值和/或设置以及其他准入控制设置可以编程方式设置或修改(例如,由客户端侧组件150使用web服务调用)。应注意,可在至少一些实施方案中采用不利用工作令牌的的准入控制技术。
在存储服务器与客户端侧组件之间的准入控制交互
图4图示根据至少一些实施方案的在服务的后端存储服务器与所述服务的客户端侧组件之间的示例的准入控制有关的交互。示出了总共四个示例块存储装置,各自具有1000的PIOPS速率。存储服务器110A包括块存储装置120A和120B,而存储服务器110B包括块存储装置120C和120D。块装置120A和120C可被认为是联合对410-例如,因为它们由同一客户端拥有,或因为它们表示单个虚拟卷的不同分区。在所描绘实施方案中,各自的令牌桶可用于针对每个装置的准入控制。当考虑是否做出准入控制参数修改以在给定装置120处实现更高I/O速率时,在至少一些实施方案中,客户端侧组件150可在其识别可以借用的容量源的尝试中优先检查联合装置120处的期望工作负荷。
客户端侧存储服务组件150包括IOPS估计器433。估计器可从多种源收集存储工作负荷有关的度量,例如,包括在客户端侧组件处代表装置120附接到的一个或更多个计算实例处理的读取/写入请求的日志,从其他实例主机或同一实例主机处的其他客户端侧组件收集的信息,和/或从存储服务器110收集的信息。通过使用收集的数据,估计器433可能够检测从各个计算实例发出的读取和写入请求的时间和/或空间模式,并且可能够使用所述模式做出关于未来读取/写入速率和/或后端I/O速率的至少短期预测。在图4所示的示例中,估计器433已预测在下一个N秒上,在装置120A处将要期待1200IOPS,并且在装置120C处将要期待600IOPS。因此,为了实现针对装置120A(具有PIOPS 1000)预测的1200IOPS,客户端侧组件150可尝试找到可以贡献或“出借”其容量的(至少)200IOPS给装置120A的其他装置120。另外,客户端侧组件150还可能需要验证装置120A所处的存储服务器110A具有足够闲置容量能够处理指向装置120A的额外负荷。
如标记为“1a”的箭头所示,客户端侧组件可向存储服务器110B(例如,存储服务器110B的准入控制器组件)发送查询来确定是否可以在下一个N秒内从装置120C(其与需要额外容量的装置120A关联)借用200IOPS。(在一些实现方式中,可请求略多于200IOPS以便能够处理200额外IOPS而不触及极限。)在所描绘实施方案中的大约同一时间处,如标记为“1b”的箭头所示,客户端侧组件可向存储服务器110A发送不同的查询以确定存储服务器是否具有足够容量来处理比规定用于装置120A多200的IOPS。在一些实现方式中,箭头1a和1b指示的两个查询可并行发送,而在其他实施方案中,客户端侧组件可等待接收到查询之一的响应后提交另一个查询;在后一情形下,查询可以任一顺序被提交。在一些实施方案中,查询可经由控制平面信道来发送(及接收其响应),而在其他实施方案中,可使用数据平面信道。
存储服务器110A和110B可检查它们的本地工作负荷度量和/或准入控制元数据来响应查询。在一些实施方案中,例如,存储服务器110A可确定在最后M秒上的针对其块装置中的每个的平均请求速率,并且如果平均请求速率的和小于针对块装置的规定速率的和适当的量,那么存储服务器可肯定地响应查询1b(如标记为“2”的箭头所示)。在令牌桶机制用于针对块装置120中的每个的准入控制的实施方案中,各个桶的累积或未使用令牌的当前填充量(其可指示闲置吞吐容量)可被检查以便响应查询。例如,在存储服务器110B处,用于块装置120C的令牌桶可指示300IOPS的可用闲置容量,所以可提供对200IOPS请求的肯定回答(如标记为“3”的箭头所示)。对查询1a和1b的响应可以任何顺序来接收;标记“2”和“3”不旨在暗示响应需要以该顺序来接收。在一些实施方案中,存储服务器110B可在肯定地响应借用容量的请求前检查其他装置的工作负荷状态-例如,如果在装置120的桶中的令牌数量非常少,那么存储服务器110B可基于令牌仅应在存储服务器处的全部块装置相对于它们的规定IOPS是合理负荷较轻的情况下出借的保守假设来否定地响应请求1a。
如果客户端侧组件能够找到捐赠块装置,并且如果被请求额外容量的存储服务器能够处理对应的负荷,那么一个或更多个准入控制参数可被修改来允许期望的请求激增被接受以供执行。如标记为“4a”的箭头所示,在所描绘示例中,用于装置120A的令牌桶的再填充速率可临时增大200令牌/秒,并且如标记为“4b”的箭头所示,针对装置120C再填充速率可减小相同量。对应于箭头“4a”和“4b”的操作可以任何顺序或并行执行。在一些实施方案中,可改变除了令牌再填充速率以外的参数或设置-例如,在一些实施方案中可仅将200*N个令牌添加到用于装置120A的令牌桶,并且可从装置120C的令牌桶减去200*N个令牌。在至少一些实施方案中,在已经过N秒时期后,参数可被复位到它们的原始值。这种准入控制参数的复位可(例如)帮助防止饥饿或不公平情形,其中一些块存储装置可另外能够在较长时间段内维持比它们的规定速率更高的请求速率,而其他装置被阻止实现超出它们的规定速率。
应注意,至少在一些实施方案中,有可能不能一直得到针对给定块装置的如为了处理整个期望的工作负荷所需那么多的容量。例如,给定块装置的规定工作负荷水平可超出50%,但是至多50%赤字的一半可通过使用从其他装置借用的容量来克服。在一些实施方案中,在这种情况下,存储服务的准入控制器(例如,在客户端侧组件处)可被配置来实现“尽力而为”方法,根据此方法,可将可用的尽可能多的闲置容量部署用于过载的块装置,即使不排队或推迟就无法处理整个工作负荷。在其他实施方案中,仅可在针对给定装置的整个期望的容量赤字可以通过使用从其他装置借用的容量来满足的情况下,调整准入控制参数。
针对分区的卷的准入控制
在至少一些实施方案中,如先前所示,跨多个存储服务器或多个物理装置分区的虚拟卷可由存储服务实现。图5图示根据至少一些实施方案的准入控制元数据的示例,所述准入控制元数据可用于包括多个分区的虚拟卷。如图所示,使用四个后端存储服务器520实现四个块级卷。卷中的两个-520B和520C-跨多个存储服务器分区,而剩余两个卷520A和520D各自受限于一个存储服务器。
在所描绘实施方案中,卷520B和520C物理上分布在多个存储服务器510的事实对客户端(代表所述客户端建立卷)可能不明显。这种卷可因此称为虚拟或虚拟化卷。客户端(针对其而设立卷520B)可仅请求可以支持4000PIOPS(如在准入控制元数据523的“卷PIOPS”列中所示)的卷。响应于这种请求,存储服务可做出以下决策:将卷分裂成在各自的存储服务器510A、510B、510C和510D处的四个分区530A、530B、530C和530D。类似地,客户端(针对其而设立卷520C)可请求1800PIOPS的卷,并且存储服务可做出决定来将对应的卷分裂成分别在存储服务器510B和510C处的分区530K和530L。对于更低的PIOPS水平诸如针对卷520A请求的1000PIOPS和针对卷520D请求的750PIOPS,可能不需要多个分区。在一些实施方案中,可基于除规定工作负荷水平以外的因素将卷分区-例如,请求的卷大小可用于确定是否需要多个分区。外部地,从客户端的角度来看,可以同一方式处理卷而不管其PIOPS水平或大小。内部地,存储服务可在不同装置和服务器中分布一些卷(但不一定是全部卷)的内容以达到请求的较高的总规定工作请求速率和/或实现请求的较大的卷大小。
在所描绘实施方案中,PIOPS设置作为准入控制元数据523的部分维持在整体卷级(如“卷PIOPS”列中所示)和分区级(如“分区PIOPS”列中所示)两者处。给定卷的分区PIOPS的和可(至少在正常操作条件下)加起来等于针对该卷整体的PIOPS设置。除了PIOPS设置以外,存储服务的准入控制器(例如,在客户端侧组件150处)也可估计在即将到来的时间间隔期间期望的IOPS,如通过“估计的IOPS”列所示。当针对给定分区的预测IOPS超出规定的IOPS时,在至少一些实施方案中,在同一卷的其他分区处在PIOPS与估计的IOPS之间的差异可被检查以便确定是否可以转移规定容量中的一些来满足增大的需求。例如,关于图5所示的示例中的分区530B,估计的IOPS超出规定的IOPS 200。因此,负责分区530B的客户端侧组件可检查卷520B的剩余分区的期望IOPS。剩余分区530A、530C和530D中的每个期望维持比规定水平低得多的I/O操作速率,并且因此剩余分区中的任一个(或任何组合)在所描绘实施方案中可被选择作为候选,从所述候选借用容量来维持分区530B处期望的200额外IOPS。类似地,为了获取用于分区530L的额外容量,其对等分区530K可首先被选择作为候选。在至少一些实施方案中,如果同一卷的分区都不具有足够的闲置容量,那么可选择其他分区或其他卷作为候选。
针对多重附接的卷的准入控制
在一些实施方案中,给定块存储装置诸如卷一次可附接到至多一个计算实例,并且因此一次可从至多一个计算实例访问。在其他实施方案中,给定卷或分区可同时附接到(并且因此可访问自)多个计算实例。图6图示根据至少一些实施方案的准入控制有关的操作的示例,所述操作针对可附接到多个计算实例的块级装置。示出了四个存储服务器610A、610B、610C和610D。图示了分别具有三个和两个分区的两个分区的卷620B和620C,而示出了三个非分区的卷620A、620D和620E。在支持分区的卷的一些实施方案中,非分区的卷可仅作为各自包括单个分区的卷来管理。在所描绘实施方案中,例如,因为各个“附接卷”API调用,分区的和非分区的卷两者都可附接到多个计算实例。分区的卷620B附接到计算实例140A和140B,而非分区的卷620E附接到计算实例140B和140C。在至少一些实施方案中,给定计算实例诸如140B可附接到多于一个多重附接的卷(诸如620B和620E)。
将给定卷分区或卷附接到若干不同计算实例(其中的每个可能潜在地在不同实例主机145处执行)的能力可使在存储服务的客户端侧组件处采用以做出准入控制参数调整的预测逻辑复杂化。在至多一个实例附接到给定卷的实施方案中,在当前附接的实例的实例主机处的客户端侧组件可能够在卷处相对容易地收集与I/O请求速率相关的工作负荷度量。然而,当同一卷或分区可从不同实例访问时,对于潜在地不同的应用,收集和分析请求模式可能不那么容易。在支持多个附接件的一些实施方案中,涉及的不同实例主机(即,同时附接的实例运行所在的不同实例主机)的客户端侧组件可针对附接的实例中的每个交换工作负荷信息。在其他实施方案中,如箭头650A、650B、650C和650D所示,在实现多重附接的卷中涉及的存储服务器610可用作将要用于在客户端侧组件处的准入控制决策的工作负荷信息的导管。例如,存储服务器诸如610D可将多重附接的卷620E的I/O度量提供给客户端侧组件150A,或存储服务器610B可将多重附接的卷分区630A的I/O度量提供给客户端侧组件150A。在一些实施方案中,存储服务器可能够针对附接到同一卷或分区的不同计算实例来隔离工作负荷度量,并且将实例组织的度量提供给客户端侧组件。这种方法可帮助改善客户端侧组件150做出的预测的准确度,并且可因此增强其准入控制参数修改的有效性。
用于客户端侧协调准入控制的方法
图7是图示根据至少一些实施方案的操作的方面的流程图,所述操作可被执行来实现针对块级存储装置的准入控制。如元素701所示,可针对实现规定工作负荷模型的存储服务的若干块级存储装置中的每个建立准入控制参数。在令牌桶(类似于图2的桶202)用于表示可用容量的实施方案中,例如,这种参数可包括用于给定卷或分区的令牌桶的再填充速率、初始令牌填充量、最大和/或最小令牌填充量等等。准入控制参数设置的每个组可(例如)基于客户端指定的偏好或要求诸如在对应卷创建请求中指示的卷大小和/或工作负荷参数等来选择。在支持分区的卷的一些实施方案中,客户端要求可用于确定将要设立多少不同的分区,并且用于识别分区将要驻留的存储服务器。参数可(例如)由在存储服务器、存储服务的客户端侧组件或存储服务器和客户端侧组件两者处的准入控制器模块用于接受、推迟或拒绝工作请求诸如从在计算实例处执行的应用发出的读取或写入操作。
如元素704中所示,存储服务的客户端侧组件可被配置来估计在各个块存储装置处的期望的工作负荷水平(诸如IOPS)。这种估计值在一些实现方式中可被生成用于(或假定为有效)相对较短的时间段诸如几秒或几百毫秒,并且可以是(例如)基于收集的指示读取和写入请求的分布的模式的度量。例如,度量可在实例主机的虚拟化管理软件栈处被收集,附接到块级装置的计算实例在所述实例主机处运行。虚拟化管理软件栈在至少一些实施方案中可充当从计算实例处运行的应用发出的I/O请求的中介,并且可将应用读取/写入请求转换成指向到存储服务器的后端I/O请求。
在时间间隔T1内有效的估计值可与对应的规定速率进行比较。如果全部的期望I/O速率处于或低于对应的规定速率(如在元素707中检测),那么在时间间隔T1内可不需要调整准入控制参数(元素725),并且客户端侧组件可收集将要用于后续时间间隔的估计值的度量。如果至少一个块存储装置BD1(在存储服务器SS1处)期望以高于其规定的I/O速率PR1X IOPS的速率接收I/O请求(如也在元素707中检测),那么客户端侧组件可继续进行来确定某一其他块装置BD2是否期望以低于BD2的规定IOPS速率PR2的速率接收I/O请求(或如果可以找到这种潜在出借块装置BD2、BD3...的群组,每个期望以各自的低于规定速率PR2、PR3...接收请求)(元素710)。应注意,虽然客户端侧组件可尝试找到足够闲置容量来匹配或甚至超出BD1的期望的过量工作负荷,但是在一些情况下,仅有可能找到足够的出借装置来履行BD1的过量工作负荷的仅一部分。为了找到这种出借装置,在至少一些实施方案中,客户端侧组件可首先检查与BD1关联的块装置的工作负荷估计值-例如,同一客户端拥有的装置,或是与BD1相同的更大虚拟卷的分区的装置。在一些实现方式中,在给定实例主机处的客户端侧组件可与其他实例主机处的其他客户端侧组件(例如,如下文所述的客户端侧联合群组的成员)通信或与存储服务器通信来确定是否可以找到这种装置BD2。
如果无法找到这种第二装置BD2,那么改变准入控制参数来实现在T1期间在BD1处所需的IOPS速率(PR1+X)可能不可行(元素722)。然而,如果找到这种装置BD2(或装置BD2、BD3...的群组)(如也在元素710中检测),那么客户端侧组件可执行额外检查。查询可被指向到BD1所位于的存储服务器SS1(元素713),以确定SS1是否具有足够容量来在T1期间管理在BD1处期待的额外负荷中的至少一些。它可能是以下情况:SS1支持用于其他客户端(或同一客户端)的若干繁忙的块存储装置并且可能不具有足够的可用吞吐容量来接受增大的工作负荷。在这种情形下,SS1可指示客户端侧组件它无法处理过量工作负荷,并且客户端侧组件可因此得出结论,准入控制参数改变不能容纳在T1期间在BD1处期待的额外工作负荷(元素722)。
如果SS1可以处理额外IOPS(也在元素713中检测),那么准入控制参数设置可在BD1处被修改(元素716)来实现将要接受的更高工作负荷中的至少一些。例如,在令牌桶用于准入控制的实施方案中,再填充速率可增大或多达X个令牌可添加到BD1的桶中。在至少一些实施方案中,可对BD2、BD3...处的准入控制参数做出对应的补偿改变-例如,可降低其令牌桶处的再填充速率,或可从其令牌桶移除一些令牌。基于修改的参数,BD1可在T1期间接受额外请求。同时,在T1期间,在BD2、BD3...处接受的最大请求速率可被降低低于其规定水平。在至少一些实施方案中,对准入控制参数的改变可在时间段T1后(例如)根据衰减函数逐渐地或根据阶梯函数接近瞬时地撤销(元素719)。在一些实施方案中,对准入控制参数的改变仅可被支持用于相对较短的时间段T1,例如,以便为除了BD1以外的装置提供根据需要成功增大其自己的吞吐容量。在已经过时期T1后,对应于元素704向前的操作可被重复用于下一个时间间隔。
如先前提出,由客户端侧组件基于期望工作负荷的估计值来调整准入控制参数的技术还可用于不使用规定的工作负荷模型的实施方案中。例如,在一些实施方案中,在即将到来的时间间隔内的内部工作负荷速率目标可与非规定的卷关联,并且上文所述的临时容量转移的类型可基于内部工作负荷速率目标而不是使用规定的IOPS速率来实现。
经由重定向的工作负荷信息散播
图8图示根据至少一些实施方案的系统,其中在存储服务的客户端侧组件之间的工作负荷有关的消息可由服务器侧组件重定向。如图所示,系统800可包括多租户存储服务的多个后端服务器810诸如服务器810A和810B,负责用于响应来自服务的多个客户端侧组件850诸如850A和850B的I/O请求817(例如,817A和817B)。在所描绘实施方案中,客户端侧组件850的每个可在虚拟化的计算服务的实例主机处的各自的虚拟化管理软件栈(VMSS)870内实现。例如,客户端侧组件850A可包括在实例主机845A处的VMSS 870A的一个或更多个模块,而客户端侧组件850B可在实例主机845B的VMSS 870B内实现。客户端侧组件可代表在计算实例840上(诸如实例主机845A的计算实例840A和840B和实例主机845B的计算实例840C和840D)运行的应用处最初生成的读取或写入请求822(例如,822A、822B、822C和822D)向存储服务器810提交I/O请求。虽然在图8的每个实例主机处示出单个客户端侧组件850,但是在各种实施方案中,多个客户端侧组件可在同一实例主机处实现。在一些实施方案中,存储服务可在块装置或卷级实现程序接口,但是在不同的实施方案中,也可或替代实现其他接口诸如文件系统API。在至少一个实施方案中,也可在系统800中使用类似于图2中所示的基于令牌的方法的准入控制技术。在一个实施方案中,存储服务可支持规定的IOPS,如先前在图4的情境中所述,但是基于消息重定向的工作负荷管理方法也可用于不使用规定工作负荷模型的实施方案中。
在图8所描绘的实施方案中,数据平面通信信道844可能已在各个存储服务器中的每个与客户端侧组件的某一子集之间建立。如先前所述,数据平面通信路径可主要建立用于包括代表在计算实例840处的应用读取或写入的数据的流量(以及针对这种读取和写入的请求),而控制平面通信路径(图8中未示出)可主要用于管理或配置目的。例如,从客户端侧组件850A到服务器810A的I/O请求可经由数据平面通信信道844A传输(并且接收对应的响应);而从客户端侧组件850A到服务器810B的I/O请求可经由数据平面通信信道844C传输(并且接收对应的响应)。类似地,数据平面通信信道844B和844D可分别用于客户端侧组件850B与服务器810A和810B的数据有关的交互。应注意,在至少一些实施方案中,不是全部后端存储服务器810可具有被建立通向全部客户端侧组件850的数据平面(或控制平面)通信信道。因此,至少在一些实施方案中,客户端侧组件的各个子集可具有设立到各个存储服务器子集的通信信道。
存储服务的某一数量的客户端侧组件850可被配置为代表单个应用或有关应用组的用于存储或I/O请求的中介。例如,涉及数打或数百计算实例845的大型分布式处理应用可代表存储服务的同一终端用户客户端账户而运行,或交互应用组可代表一个或更多个用户账户通过使用多个计算实例而执行。对于一些这种应用,给定存储卷或后端装置可被配置成可由多个客户端侧组件访问(以类似于图6所示的方式)。在使用类似于图5中所示的那些的分区的卷的一些实施方案中,若干客户端侧组件可参与用于针对应用设立的单个分区的卷的请求-响应路径。多个客户端侧组件可因此在代表一些应用或应用组以多种配置执行的I/O中涉及。从终端用户客户端的角度和/或应用的角度来看,理想情况下基于关于应用的各个元素的共享的工作负荷信息,通过涉及的多个客户端侧组件的后端请求的协调调度和/或准入控制可以是有益的。因此,在至少一些实施方案中,客户端侧组件的各个群组可被识别来在各自的群组内共享工作负荷信息,并且使用共享的工作负荷信息来做出更明智的工作负荷调度决策。这种群组在本文中可称为客户端侧联合群组。在描绘的实施方案中,客户端侧组件850A和850B被假定是同一联合群组的成员。在各种实施方案中,联合群组的成员身份可基于若干不同因素中的任何因素来确定,诸如在群组的成员中共享资源的使用、涉及的计算实例或实例主机的组的共同客户端账户所有权、对分区的卷或多重附接的共享卷的访问、用于群组的资源的位置或接近度等等。
在图8所示的实施方案中,可通过使用预先存在的数据平面通信信道将工作负荷信息从客户端侧组件850发送到存储服务器810,并且随后基于分布策略的参数集从存储服务器重定向到始发组件的联合群组的其他客户端侧组件。因此,例如,客户端工作负荷度量818可包括在从组件850A发送到服务器810A的后端I/O请求817A内。在不同的实施方案中,可传输许多不同种类的工作负荷度量。度量818可(例如)指示由客户端组件850A在先前X秒上发出的读取请求和/或写入请求的数量或速率、由客户端组件850A在最后X秒上从各个计算实例845接收的请求的数量或速率、对客户端组件850A发出的后端请求的时延或响应时间测量值、CPU利用率、本地磁盘利用率或实例主机845A的网络利用率度量等等。在一些实施方案中,在未来时间间隔内的期望的/估计的度量可代替已测量的度量或除了已测量的度量以外被传输。
在服务器810A处,度量818可至少临时保存到缓冲器876A或数据库。在一些实现方式中,来自同一客户端侧组件850的较旧度量可基于如下文所述的保留策略在缓冲器876中被改写。根据分布策略878A,服务器810A可识别一个或更多个其他客户端侧组件诸如850B,来自850A(和/或来自联合群组的其他成员)的度量应被传播到所述其他客户端侧组件。在所描绘实施方案中,度量可在对I/O请求817B的响应819中从服务器810A传输到客户端侧组件850B。在一些实施方案中,用于联合群组的多于一个成员的度量821可在单个消息中传输,而在其他实施方案中,单个客户端侧组件的度量可按每个消息传输。
在选定的目的地客户端侧组件850B处,接收的度量821可保存在联合群组数据库870B中。数据库870B可(例如)包括联合群组的各个其他成员的工作负荷度量、附接到各个成员的相对优先级或权重、获取针对任何给定成员的工作负荷度量有多久等等。基于接收的度量821和/或储存库870B中的额外的元数据,客户端侧组件850B可做出用于后续后端服务请求的调度决策,例如,如果鉴于来自其他联合群组成员的高请求速率确定应降低指向到一个或更多个后端服务器的工作负荷,将一些选定的请求在请求队列872B内排队。组件850B的工作负荷度量继而可发送到一个或更多个服务器810诸如810B或810A,并且可重定向到联合群组的其他组件。因此,组件850A可从服务器810的某一组合接收与850B和其他联合群组成员关联的度量,并且可保存该信息在其自己的数据库870A内。客户端侧组件850A可使用收集的工作负荷信息来修改其自己的指向到一个或更多个后端服务器810的工作负荷,例如,临时将一些请求置于请求队列872A中。每个存储服务器可维持其自己的客户端度量缓冲器876诸如在服务器810B处的缓冲器876B,并且可根据可适用的分布策略(诸如在服务器810B处的策略878B)将度量重新分布到某一组的客户端侧组件。在不同存储服务器810处的缓冲器876的内容在任何给定时间点可彼此不同。在至少一些实施方案中,各个服务器810使用的分布策略参数也可彼此不同-例如,在服务器810B处的用于工作负荷度量消息的调度策略在给定时间点可与该时刻在服务器810A处使用的调度策略不同。
在所描绘实施方案中,客户端侧工作负荷信息可随着时间推移传播到各个合作的客户端侧组件。如图8中所示,如果工作负荷度量捎带在任何情况下都会发送的请求和响应上,那么与工作负荷信息共享关联的开销在至少一些实施方案中可最小化。此外,在至少一些实现方式中,由于联合群组的服务请求的总速率增大,工作负荷信息可能更频繁地传播,这是因为出于捎带目的,每单位时间可用的更多的后端I/O请求和响应。因此,在给定客户端侧组件处的工作负荷度量的测量与工作负荷度量由其他客户端侧组件接收的时间之间的平均延迟可降低。因此,与降低存储服务的总工作负荷水平的情况相比,在这种实现方式中,可使用最新度量做出在各个客户端侧组件处的工作负荷调度决策。基于共享工作负荷度量做出的调度决策的质量可因此随着提升总工作负荷水平而得到改善。
如先前提出,存储服务器810可继续利用准入控制参数来对工作负荷进行节流,与在一些实施方案中在客户端侧组件处使用的技术无关。在这种情形下,在存储服务器处基于准入控制设置做出的拒绝或延迟请求的决策可产生改写客户端侧组件的工作负荷重新调度决策的效果。例如,基于上文所述种类的工作负荷度量共享,特定客户端侧组件C1可尝试在某一时间间隔期间每秒调度N个后端请求到给定存储服务器S1。如果S1的准入控制参数(例如,结合从其他客户端侧组件指向到S1的工作负荷)不允许该工作负荷水平,那么尽管C1尽力在C1的联合群组的情境下管理工作负荷水平,C1的请求中的一些还是可被S1拒绝。
度量分布策略
在各种实施方案中,通过存储服务器接收的工作负荷度量被传播的方式的若干方面可经由可配置参数控制。图9图示根据至少一些实施方案的分布策略的示例参数,所述分布策略可用于重定向工作负荷有关的消息。如图所示,除其他外,在存储服务器810处的数据库956中识别的将要施加用于联合群组成员的分布策略参数902可包括目的地选择策略910、消息调度策略914、转移机制918、客户端度量保留策略920、度量分组策略924和/或服务器工作负荷传播设置928。
在各种实施方案中,可使用若干不同方法中的任何方法将包括在数据库956中的联合群组成员身份信息(例如,各个客户端侧组件850属于哪个或哪些联合群组(如果有的话))提供给负责用于重定向客户端侧组件工作负荷度量的存储服务器。在一个实施方案中,给定客户端侧组件C1可经由控制平面消息或经由数据平面消息向服务器S1发送C1想要合作的其他客户端侧组件C2、C3...的列表。服务器S1可被配置来例如基于从其他成员接收的各自的消息或通过查询每个建议的成员C2、C3...关于是否该部件想要参与与C1共享工作负荷度量来确认成员身份。这种确认有关的消息在一些实施方案中可通过使用控制平面路径或在其他实施方案中通过使用数据平面路径来传输或交换。在一些实施方案中,客户端侧组件可经由到存储服务器的消息定期重新确认其在联合群组中的会员身份。在一个实施方案中,存储服务器可(例如)通过使用直接服务器到服务器通信或经由客户端侧组件以图3所示和下文所述的方式重定向的消息与其他存储服务器交换联合群组会员身份信息。
在特定联合群组内,服务器810可识别应基于目的地选择策略910将度量集指向到的具体的客户端侧组件(和/或客户端侧组件的数量)。例如,在一些实施方案中,可以类似于基于闲聊的协议中使用的方式在联合群组成员中随机选择目的地。在其他实施方案中,可使用更确定的目的地选择技术,例如,可利用循环方法,或可使用目的地的基于优先级的列表,其中与其他组件相比,更频繁地向一些客户端侧组件提供工作负荷信息。包含重定向度量的消息的时间可基于消息调度策略914来确定-例如,服务器810是否应在指向到客户端侧组件的每个通信中、在指向到客户端侧组件的每N个通信中、至少每N秒一次到每个客户端侧组件、基于在服务器与客户端侧组件之间的网络利用水平选择的时间等等来包括度量。将要使用的特定消息传输技术,例如,是否将要使用在服务响应上捎带、将要使用单独的度量专用消息、或将要使用捎带和度量专用消息的某一组合,在所描绘实施方案中可经由转移机制918来指示。在一些实施方案中,转移机制可依赖数据有效负荷的大小,关于用于在服务器与客户端侧组件之间的消息的传输单元大小的数据包大小。例如,根据一个转移机制设置,服务器可基于通信必须包括的数据有效负荷的多少字节来确定将要在给定数据平面消息中传输多少(或具体哪些)客户端侧度量信息:例如,如果消息传输大小是4096字节并且数据有效负荷占用3072字节,仅可包括1024字节的度量。
至少在一些情形下,可建议仅使用在选定时间窗口内收集的那些工作负荷度量来做出调度决策,因为先前收集的度量可能不再足够准确来帮助改善调度。因此,在一些实施方案中,可施加客户端度量保留策略920,指示在存储服务器处最初接收到度量后应保留它们多久或多久后重定向它们。在一些实现方式中,全局保留策略可被施加到全部度量-例如,旧于300秒的度量可被丢弃。在其他实现方式中,可(例如)在每联合群组的基础上、在每客户端侧组件的基础上、在每客户端账户的基础上、在每客户应用的基础上、或在重定向的度量的类型的基础上(例如,不同的保留时期可用于CPU有关的度量和磁盘有关的度量)将各自的保留策略施加到不同的度量组。
在一些实施方案中,仅单个客户端侧组件的度量可由存储服务器按每消息来重定向,而在其他实施方案中,可传输对于联合群组的若干或全部成员可用的最新度量。在一些这种实施方案中,度量分组策略928可用于确定应被封装到给定消息中的度量组。如果大量的度量数据由服务器从每个客户端侧组件收集,那么在一些实施方案中,基于分组策略,例如,基于最大传输单元大小或数据包大小,仅度量的子集可在一个消息中传输。在使用捎带的实现方式中,如上文所示,包括或分组在到客户端侧组件的给定消息内的度量组可依赖在考虑消息的数据有效负荷后剩余的空间。
在至少一个实施方案中,存储服务器还可收集其自己的度量并且将它们传输到客户端侧组件以供重定向到其他存储服务器,如在图10中所示和在下文所述。管理工作负荷度量的服务器到服务器重定向的策略(例如,在哪个时间间隔内应重新分布哪些度量,以及在哪个服务器组中),类似于在图9中所示的其他策略中的一些的概念但是适用于服务器侧度量而不是客户端侧度量,在所描绘实施方案中,可通过服务器侧传播设置928来指示。应注意,在各种实施方案中,可能不使用图9中所示的全部的不同参数和策略,而在其他实施方案中可使用其他参数(未在图9中示出)。
工作负荷信息的双向分布
图10图示根据至少一些实施方案的通过存储服务的客户端侧组件和服务器组件两者重定向工作负荷有关的消息的示例。示出了包括客户端侧组件850A、850B和850C的联合群组1012。在不同的实施方案中,联合群组中的成员身份可基于各种因素来确定,例如,在通过不同的客户端侧组件为其处理I/O请求的共同客户账户的基础上、共享资源的使用、类似客户应用、位置或在一些情况下,仅因为不同的客户端侧组件提交指示它们想要使用共享工作负荷数据合作进行资源调度的请求。
在所描绘实施方案中,客户端侧组件850A向一个或更多个存储服务器诸如810A发送其工作负荷度量。服务器810A将850A的度量重定向到联合群组1012的其他成员。类似地,接收850A的度量(或来自850B或850C的度量)的其他服务器诸如810B或810C也可基于如上文所述的各种策略和参数的类型将度量重定向到联合群组1012的其他成员。在所描绘的实施方案中,除了重新分布客户端侧组件度量以外,存储服务器可使用客户端侧组件作为重定向中介来传播服务器侧度量。因此,存储服务器810A向客户端侧组件850A发送某一服务器侧度量组(例如,在先前N秒上其处理的总的读取或写入请求速率)。客户端侧组件可(例如)使用数据平面通信信道以类似于客户端侧度量分布方式的方式将服务器侧度量重定向到其他服务器诸如810B或810C。给定存储服务器810A可指示它想要将它的度量(例如,作为控制平面消息的部分或在数据平面消息中)传播到的其他服务器组。重定向的服务器侧度量可在服务器处用于做出更明智的准入控制决策,诸如基于在其他服务器处观察到的工作负荷趋势来临时修改服务器侧准入控制参数。
在一些实施方案中,其中工作负荷度量并入包括数据请求(例如,读取请求)、数据有效负荷(例如,写入请求或对读取请求的响应)或I/O响应(例如,对写入请求的响应)的网络消息内,给定数据平面消息可包括捎带的客户端侧度量、服务器侧度量或两种类型的度量。因此,例如,客户端侧组件850A的度量可在读取请求中发送到服务器810A,并且对读取请求的响应,除了读取数据有效负荷以外,可包括810A的服务器侧度量以及来自其他组件诸如850B的客户端侧度量。在至少一些实施方案中,各自的联合群组可限定用于在服务器810中的工作负荷信息共享以及(或替代)在客户端侧组件中的工作负荷信息共享。
联合群组成员的角色和相对优先级
在一些实施方案中,例如,基于相对于某一应用组的成员的角色,客户端侧联合群组的不同成员的存储请求可被视为具有不同的优先级。关于群组成员角色的信息可在联合群组数据库中,在各个群组成员中的每个处维持。由于工作负荷度量在成员中逐渐分布,在给定时间点在不同群组成员处的数据库的内容在至少一些实施方案中可能不一定相同。图11图示根据至少一些实施方案的可在存储服务的客户端侧组件850处维持的联合群组数据库1102的示例内容。联合群组信息在图11中以表格形式显示,尽管在不同实施方案中可使用任何适当的数据结构。如图所示,数据库可包括组件标识符(在列1120中)以及与组件相关联的逻辑或功能角色的指示(例如,“协调器”、“数据收集器”等)(列1124)。
指示接收针对联合群组的每个组件的存储度量有多久的数据(诸如在列1132中所示的读取和写入请求速率)可包括在列1128中。基于角色和/或各种类型的存储操作的请求速率,相对权重可被分配给每个组件,例如,可用于使来自一个组件的请求优先于另一组件的请求(例如,由更低优先级的组件在其后端请求之间引入延迟)。在所描绘示例中,不同的权重附接到每个组件发出的读取和写入;在其他实现方式中,单个权重可被分配到每个组件而不是对读取和写入分配单独的权重。在一些实施方案中,可针对不同大小范围的存储请求分配各自的权重-例如,客户端C1发出的大于512KB的较大写入可被分配一个权重,而可来自该同一客户端C1的小于16KB的较小写入可被分配不同权重。在各种实施方案中,相对权重可由联合群组的成员在彼此交换消息后(例如)利用涉及的客户端侧组件中的每个的协议来分配。在一些实施方案中,提议的或认可的相对权重可以类似于用于度量传播的方式经由重定向沿数据平面路径在联合群组成员中传输。在其他实施方案中,控制平面消息可用于传播相对权重信息或优先级信息。
使用重定向消息的工作负荷管理方法
图12是图示根据至少一些实施方案的操作的方面的流程图,所述操作可被执行来使用重定向消息实现存储工作负荷管理。在元素1201中所示,数据平面通信信道可在存储服务的客户端侧组件与服务器组件之间建立,主要用于数据请求和响应,而不是也可在一些实施方案中建立的管理或配置有关的信道。在至少一些实施方案中,存储服务可以是多租户的,例如每个存储服务器和/或客户端侧组件可负责处理若干不同客户端的存储请求。在至少一个实施方案中,块级装置接口(例如,允许使用块级API附接和访问卷的接口)可由存储服务来支持。在不同的实施方案中,还可支持其他类型的程序接口诸如文件系统接口或提供对非结构化存储对象的访问的web服务API。
如在元素1204中所示,客户端联合群组的成员身份(可共享工作负荷度量来改善存储有关的操作的集体调度的客户端侧组件的组)可被确定。在不同实施方案中,在确定哪些客户端侧组件应合作时可考虑各种因素,诸如被服务的实例或应用的共同所有权、共享资源诸如分区的卷或多重附接的卷的使用、相对于使用的硬件组的位置、运行的应用的类型等等。
可确定参数和/或策略组,其将要用于由存储服务器将客户端侧组件工作负荷信息散播到适当的联合群组成员(元素1207)。这种参数可包括将要用于度量目的地的选择准则、消息的频率、将要用于度量分布的消息传输机制等等。在至少一些实施方案中,一个存储服务器的分布策略可与另一个存储服务器的分布策略不同。在一个实施方案中,一些分布参数设置可在存储服务的客户指示的偏好的基础上来设置。分布策略可(例如)基于做出的调度决策的有效性的测量来随着时间的推移进行调整。在一个实现方式中,可使用机器学习方法,其中参数诸如连续重定向度量消息之间的时间间隔可基于收集的存储性能度量的分析进行调整。
给定客户端侧组件C1可在某一时间间隔上收集其工作负荷度量M1(例如,读取请求、写入请求的速率等)(元素1210),并且将它们传输到选定的存储服务器S1(元素1213)。在一些实施方案中,可使用预先存在的数据平面通信信道,例如,通过在读取请求或写入请求上捎带度量,或通过经由数据平面信道发送单独的度量专用消息。继而,服务器S1可(例如)通过在从那些客户端侧组件接收的后续I/O请求的响应内包括度量,使用其他预先存在的数据平面通信信道向一个或更多个其他客户端侧组件C2、C3...传输度量M1(元素1216)。接收的客户端侧组件可添加接收到的度量到它们的联合群组数据和元数据的本地集合,并且可使用接收到的度量做出关于将要提交到存储服务的后端的其他服务请求的调度决策(元素1219)。所述过程可在不同时间段上在各个客户端-服务器组合处重复(例如,可重复类似于在元素1210-1219中指示的那些的操作),使得在联合群组的其他成员处的工作负荷条件的集体视图在每个合作客户端侧组件处逐渐变得可用,并且可以改善调度决策来使联合群组整体受益。
在一些实施方案中,可使用非数据平面消息,例如,可使用控制平面路径来传输重定向工作负荷度量。在那些实施方案中,其中工作负荷信息经由捎带在任何情况下都将递送的消息上来传输,散播工作负荷信息的开销可保持相当低。在一些实施方案中,服务器侧工作负荷度量也可或替代通过使用类似重定向技术来传输,其中服务器收集和传输它们自己的工作负荷度量到客户端侧组件,并且客户端侧组件随后向其他服务器转发度量。
应注意,在各种实施方案中,除了在图7和图12的流程图中所示的那些以外的操作可用于实现上文所述的工作负荷管理技术。所示操作中的一些在一些实施方案中可不被实现或以不同的顺序实现,或并行而不是顺序实现。例如,关于图12,数据平面通信信道的建立可在识别联合群组后发生,或与联合群组成员身份的确定并行发生。在至少一些实施方案中,上文所述的技术可用于管理除了块装置以外的其他类型的存储装置处的工作负荷-例如,类似技术可用于非结构化的存储装置,其允许使用web服务接口而不是块装置I/O接口访问任意存储对象,或允许访问关系或非关系数据库的表或分区。
使用案例
上文所述的技术:针对网络可访问存储装置的协调准入控制和基于重定向工作负荷度量调度存储工作负荷,在许多情形下可能都是有用的。由于应用的存储需要的增长,越来越多的卷可被配置用于客户端应用,其中针对卷规定比例更高的吞吐容量速率。出于若干原因(诸如个别存储装置诸如磁盘或磁盘阵列的吞吐能力不如对于更高规定容量的需求或出于高可用性/耐久性原因增长得快的事实),存储服务可跨在后端处的多个存储服务器和/或装置将更大卷分区,而无需将分区的细节透露给客户端。存储服务随后可必须使指向到不同分区的工作负荷平衡。不平衡的工作负荷的客户端侧预测,类似于所述的那些,对于处理工作负荷的时间和空间变化可能非常有用。可能使用非常频繁的分区可能够从被期望是不太繁忙的另一个分区“借用”规定容量,而对于客户端来说,仅出现了能够处理高工作负荷的较大卷,而不管如何变化。类似地,临时转移在不同卷中而不是同一卷的不同分区中的规定容量的能力可使使用具有非均匀工作负荷的若干不同卷的客户端应用的群组(或单个客户端应用)受益。本文所述类型的动态准入控制参数修改可甚至更有利于多重附接的卷(其中工作请求可从若干不同计算实例被指向到给定卷),在该情况下的工作负荷可比在单附接的卷的情况下更大程度的改变。
上文所述的基于重定向的技术可提供传播工作负荷度量的非常有效的方式,特别是在将度量捎带在无论是否基于共享工作负荷信息做出工作负荷调度决策都将传输的消息上时。通过允许客户端共同限定联合群组,并且随后在这种群组的成员中共享工作负荷信息,有可能以成本有效方式实现使群组整体受益的更高级别调度优化。由于工作负荷水平增大,在一些实现方式中度量可甚至更频繁交换,因此潜在导致在更高负荷水平下的更好的调度。
说明性计算机系统
在至少一些实施方案中,实现本文所述的技术(包括实现存储服务的客户端侧组件和后端组件的技术)中的一个或更多个的部分或全部的服务器可包括通用计算机系统,所述通用计算机系统包括或被配置来访问一个或更多个计算机可访问介质。图13图示这种通用计算装置3000。在所示的实施方案中,计算装置3000包括经由输入/输出(I/O)接口3030耦接到系统存储器3020(其可包括非易失性和易失性存储器模块两者)的一个或更多个处理器3010。计算装置3000还包括耦合到I/O接口3030的网络接口3040。
在各种实施方案中,计算装置3000可以是包括一个处理器3010的单处理器系统,或包括若干处理器3010(例如,两个、四个、八个或另一合适的数目)的多处理器系统。处理器3010可以是能够执行指令的任何合适的处理器。例如,在各种实施方案中,处理器3010可以是通用或嵌入式处理器,其实现多个指令集架构(ISA)中的任一者,诸如x86、PowerPC、SPARC或MIPS ISA或任何其他合适的ISA。在多处理器系统中,处理器3010中的每个可通常但不是必须实现相同ISA。在一些实现方式中,可代替常规处理器或除了常规处理器以外来使用图形处理单元(GPU)。
系统存储器3020可被配置来存储可由处理器3010访问的指令和数据。在至少一些实施方案中,系统处理器3020可包括易失性和非易失性部分;在其他实施方案中,仅可使用易失性存储器。在各种实施方案中,系统存储器3020的易失性部分可通过使用任何合适的存储器技术进行实现,诸如静态随机存取存储器(SRAM)、同步动态RAM或任何其他类型的存储器。对于系统存储器的非易失性部分(例如,其可包括一个或更多个NVDIMM),在一些实施方案中,可使用包括NAND闪存装置的基于闪存的存储器装置。在至少一些实施方案中,系统存储器的非易失性部分可包括电源,诸如超级电容器或其他电力存储装置(例如,电池)。在各种实施方案中,基于忆阻器的电阻式随机存取存储器(ReRAM)、三维NAND技术、铁电RAM、磁阻RAM(MRAM)、或各种类型的相变存储器(PCM)中的任何可至少用于系统存储器的非易失性部分。在所说明的实施方案中,实现一个或更多个所需功能的程序指令和数据(诸如上文描述的那些方法、技术和数据)示出为作为代码3025和数据3026存储在系统存储器3020内。
在一个实施方案中,I/O接口3030可被配置来协调处理器3010、系统存储器3020与装置中的任何外围装置(包括网络接口3040或其他外围接口,诸如用以存储数据对象分区的物理复本的各种类型的永久和/或易失性存储装置)之间的I/O流量。在一些实施方案中,I/O接口3030可执行任何必要的协议、时序或其他数据变换以将来自一个组件(例如,系统存储器3020)的数据信号转换为适合另一组件(例如,处理器3010)使用的格式。在一些实施方案中,I/O接口3030可包括对通过各种类型的外围总线附接的装置的支持,外围总线诸如(例如)外围组件互连(PCI)总线标准或通用串行总线(USB)标准的变体。在一些实施方案中,I/O接口3030的功能可分为两个或更多个单独组件,诸如(例如)北桥和南桥。此外,在一些实施方案中,I/O接口3030的功能中的一些或全部(诸如到系统存储器3020的接口)可直接并入到处理器3010中。
例如,网络接口3040可以被配置来允许在计算装置3000与附接到一个或多个网络3050的其他装置3060诸如图1至图12所示的其他计算机系统或装置之间交换数据。在各种实施方案中,网络接口3040可支持经由任何合适的有线或无线通用数据网络(诸如像以太网类型)进行的通信。此外,网络接口3040可支持经由电信/电话网络(诸如模拟语音网络或数字光纤通信网络)、经由存储区域网络(诸如光纤信道SAN)或经由任何其他合适类型的网络和/或协议进行的通信。
在一些实施方案中,系统存储器3020可为被配置来存储如上所述用于图1至图12的用于实现对应方法和设备的实施方案的程序指令和数据的计算机可访问介质的一个实施方案,。然而,在其他实施方案中,可以在不同类型的计算机可访问介质上接收、发送或存储程序指令和/或数据。一般来说,计算机可访问介质可包括非暂时性存储介质或存储器介质,诸如磁性或光学介质,例如经由I/O接口3030耦合到计算装置3000的磁盘或DVD/CD。非暂时性计算机可访问存储介质还可包括任何易失性或非易失性介质,诸如RAM(例如,SDRAM、DDR SDRAM、RDRAM、SRAM等)、ROM等,其可作为系统存储器3020或另一类型的存储器包括在计算装置3000的一些实施方案中。另外,计算机可访问介质可包括传输介质或信号,诸如经由通信介质诸如网络和/或无线链路传输的电信号、电磁信号或数字信号,所述通信介质诸如可经由网络接口3040实现。在各种实施方案中,诸如图13所示的多个计算装置的部分或全部可用于实现所述功能;例如,在多种不同的装置和服务器上运行的软件组件可合作以提供该功能。在一些实施方案中,除了或者代替使用通用计算机系统来实现,可使用存储装置、网络装置或专用计算机系统来实现所述功能的部分。如本文使用的术语“计算装置”是指至少全部这些类型的装置,并且不限于这些类型的装置。
结论
各种实施方案还可包括接收、发送或存储根据前面描述在计算机可访问介质上实现的指令和/或数据。一般来说,计算机可访问介质可包括存储介质或存储器介质(诸如磁性介质或光学介质,例如磁盘或DVD/CD-ROM)、易失性或非易失性介质(诸如RAM(例如,SDRAM、DDR、RDRAM、SRAM等)、ROM等)以及传输介质或信号诸如通过通信介质(诸如网络和/或无线链路)传输的电信号、电磁信号或数字信号。
如在图中所示和本文所描述的各种方法表示方法的示例性实施方案。所述方法可以软件、硬件或其组合来实现。方法的顺序可以改变,并且各个元素可以被添加、重新排序、组合、省略、修改等。
受益于本公开的本领域技术人员将清楚可进行各种修改和变化。旨在包含全部这种修改和改变,并且因此,以上说明书应被视为说明性的而不是限制性的意义。
可鉴于下文条款描述本公开的实施方案:
1.一种系统,其包括:
一个或更多个计算装置,所述一个或更多个计算装置被配置来:
针对在多租户存储服务处实现的多个块级存储装置中的每一个建立各自的准入控制参数组,以实现各自的规定工作负荷的速率;
由所述多租户存储服务的客户端侧组件生成工作请求的特定速率的估计值,所述工作请求被期望在特定时间段期间指向到第一存储服务器处实现的第一块级存储装置的至少一部分,其中所述特定速率超出第一规定速率;
由所述客户端侧组件识别包括第二存储服务器的一个或更多个其他存储服务器,在所述其他存储服务器处,预期各自的工作请求速率小于各自的规定速率;
验证所述第一存储服务器在所述特定时间段期间具有足够的工作负荷容量以高于所述第一规定速率的速率完成工作请求;
修改所述第一块级存储装置的至少一个准入控制参数以使得所述第一存储服务器能够在所述特定时间段期间以多达高于所述第一规定速率的速率接受工作请求;以及
修改在所述第二存储服务器处的至少一个特定块级存储装置的至少一个准入控制参数以使得所述第二存储服务器能够在所述特定时间段期间以不大于所述第二存储服务器的规定速率的速率接受工作请求。
2.如条款1所述的系统,其中所述客户端侧组件的至少一部分在多租户计算服务的实例主机处的虚拟化管理软件栈内实现。
3.如条款1所述的系统,其中为了修改所述第一块级存储装置的所述至少一个准入控制参数,所述一个或更多个计算装置还被配置来增大与所述第一块级存储装置相关联的工作令牌桶的令牌再填充速率。
4.如条款1所述的系统,其中所述第一块级存储装置的所述部分包括针对特定客户端建立的多分区块级卷的第一分区,并且其中在所述第二存储服务器处的所述特定块级存储装置的至少一部分包括所述多分区块级卷的第二分区。
5.如条款1所述的系统,其中所述一个或更多个计算装置还被配置来:
在所述特定时间段后,将所述第一块级存储装置的特定准入控制参数复位以使得所述第一存储服务器能够以不大于所述第一规定速率接受工作请求。
6.如条款5所述的系统,其中为了将所述特定准入参数复位,所述特定准入控制参数的值根据在复位时间段上的衰减函数从第一设置改变到第二设置。
7.如条款5所述的系统,其中为了将所述特定准入参数复位,所述特定准入控制参数的值根据阶梯函数从第一设置改变到第二设置。
8.一种方法,其包括:
通过一个或更多个计算装置执行以下操作:
针对在存储服务处实现的多个块级存储装置建立各自的一个或更多个准入控制参数的组,以实现各自的工作负荷极限;
由所述存储服务的客户端侧组件生成工作请求的特定速率的估计值,所述工作请求被期望在特定时间段期间指向到第一存储服务器处实现的第一块级存储装置的至少一部分,其中所述工作请求的特定速率超出与所述第一块级存储装置相关联的第一速率;
由所述客户端侧组件识别特定块级存储装置的至少一部分,预期在所述特定时间段期间指向到所述特定块级存储装置的至少一部分的工作请求的第二速率小于与所述特定块级存储装置相关联的第二速率;以及
修改所述第一块级存储装置的至少一个准入控制参数以使得所述第一多租户存储服务器能够以高于所述第一速率的速率接受指向到所述第一块级存储装置的工作请求。
9.如条款8所述的方法,其中所述第一存储服务器被配置来实现所述服务的多个客户端的块级存储装置。
10.如条款8所述的方法,其还包括由所述一个或更多个计算装置执行以下操作:
在所述修改前,验证所述第一存储服务器在所述特定时间段期间具有足够的工作负荷容量以高于所述第一速率的速率完成工作请求。
11.如条款8所述的方法,其还包括由所述一个或更多个计算装置执行以下操作:
修改所述特定块级存储装置的至少一个准入控制参数以使得所述对应的存储服务器能够以不大于所述第二速率的速率接受工作请求。
12.如条款8所述的方法,其中所述客户端侧组件的至少一部分在多租户计算服务的实例主机处的虚拟化管理软件栈内实现。
13.如条款8所述的方法,其中所述修改所述第一块级存储装置的至少一个准入控制参数包括增大与所述第一块级存储装置相关联的工作令牌桶中的令牌再填充速率。
14.如条款8所述的方法,其中所述第一块级存储装置的所述部分包括针对特定客户端建立的多分区块级卷的第一分区,并且其中所述特定块级存储装置的所述部分包括所述多分区块级卷的第二分区。
15.如条款8所述的方法,其还包括由所述一个或更多个计算装置执行以下操作:
在所述特定时间段后,将所述第一块级存储装置的特定准入控制参数复位以使得所述第一存储服务器能够以不大于所述第一速率接受工作请求。
16.如条款8所述的方法,其还包括由所述一个或更多个计算装置执行以下操作:
将所述第一块级存储装置附接到多个计算实例,所述多个计算实例包括在第一实例主机处的第一计算实例和在第二实例主机处的第二计算实例,其中在所述第一实例主机处例示所述客户端侧组件;
由所述第一实例主机处的所述客户端侧组件获取在所述第二实例主机处的第二客户端侧组件的工作负荷水平的指示,以确定将要对至少一个准入控制参数做出的改变。
17.如条款16所述的方法,其中所述第二客户端侧组件的所述工作负荷水平的所述指示是从所述第一存储服务器提供给所述第一实例主机处的所述客户端侧组件。
18.一种存储程序指令的非暂时性计算机可访问存储介质,所述程序指令当在一个或更多个处理器上执行时:
生成工作请求的特定速率的估计值,所述工作请求被期望在特定时间段期间指向到在存储服务的第一存储服务器处实现的第一块存储装置的至少一部分,其中所述工作请求的特定速率超出与所述第一块存储装置相关联的第一速率;
在所述存储服务的客户端侧组件处,识别至少一个其他存储服务器,在所述至少一个其他存储服务器处,预期在所述特定时间段期间指向到特定块存储装置的至少一部分的工作请求的第二速率小于与所述特定块存储装置相关联的第二速率;以及
修改与所述第一块存储装置相关联的至少一个准入控制参数以使得所述第一存储服务器能够以高于所述第一速率的速率接受工作请求。
19.如条款18所述的非暂时性计算机可访问存储介质,其中所述第一存储服务器被配置来实现所述存储服务的多个客户端的存储装置。
20.如条款18所述的非暂时性计算机可访问存储介质,其中所述指令在所述一个或更多个计算装置上执行时:
在修改所述至少一个准入控制参数前,验证所述第一存储服务器期望在所述特定时间段期间具有足够的工作负荷容量以高于所述第一速率的速率完成工作请求。
21.如条款18所述的非暂时性计算机可访问存储介质,其中所述指令在所述一个或更多个计算装置上执行时:
修改所述特定存储装置的至少一个准入控制参数以使得所述其他存储服务器能够以不大于所述第二速率的速率接受工作请求。
22.如条款18所述的非暂时性计算机可访问存储介质,其中所述客户端侧组件的至少一部分在多租户计算服务的实例主机处的虚拟化管理软件栈内实现。

Claims (15)

1.一种系统,其包括:
一个或更多个计算装置,所述一个或更多个计算装置被配置来:
针对在多租户存储服务处实现的多个块级存储装置中的每一个建立各自的准入控制参数组,以实现各自的规定工作负荷的速率;
由所述多租户存储服务的客户端侧组件生成工作请求的特定速率的估计值,所述工作请求被期望在特定时间段期间指向到第一存储服务器处实现的第一块级存储装置的至少一部分,其中所述特定速率超出第一规定速率;
由所述客户端侧组件识别包括第二存储服务器的一个或更多个其他存储服务器,在所述其他存储服务器处,预期各自的工作请求速率小于各自的规定速率;
验证所述第一存储服务器在所述特定时间段期间具有足够的工作负荷容量以高于所述第一规定速率的速率完成工作请求;
修改所述第一块级存储装置的至少一个准入控制参数以使得所述第一存储服务器能够在所述特定时间段期间以多达高于所述第一规定速率的速率接受工作请求;以及
修改在所述第二存储服务器处的至少一个特定块级存储装置的至少一个准入控制参数以使得所述第二存储服务器能够在所述特定时间段期间以不大于所述第二存储服务器的规定速率的速率接受工作请求。
2.如权利要求1所述的系统,其中所述客户端侧组件的至少一部分在多租户计算服务的实例主机处的虚拟化管理软件栈内实现。
3.如权利要求1所述的系统,其中为了修改所述第一块级存储装置的所述至少一个准入控制参数,所述一个或更多个计算装置还被配置来增大与所述第一块级存储装置相关联的工作令牌桶的令牌再填充速率。
4.如权利要求1所述的系统,其中所述第一块级存储装置的所述部分包括针对特定客户端建立的多分区块级卷的第一分区,并且其中在所述第二存储服务器处的所述特定块级存储装置的至少一部分包括所述多分区块级卷的第二分区。
5.如权利要求1所述的系统,其中所述一个或更多个计算装置还被配置来:
在所述特定时间段后,将所述第一块级存储装置的特定准入控制参数复位以使得所述第一存储服务器能够以不大于所述第一规定速率接受工作请求。
6.如权利要求5所述的系统,其中为了将所述特定准入参数复位,所述特定准入控制参数的值根据在复位时间段上的衰减函数从第一设置改变到第二设置。
7.如权利要求5所述的系统,其中为了将所述特定准入参数复位,所述特定准入控制参数的值根据阶梯函数从第一设置改变到第二设置。
8.一种方法,其包括:
通过一个或更多个计算装置执行以下操作:
针对在存储服务处实现的多个块级存储装置建立各自的一个或更多个准入控制参数的组,以实现各自的工作负荷极限;
由所述存储服务的客户端侧组件生成工作请求的特定速率的估计值,所述工作请求被期望在特定时间段期间指向到第一存储服务器处实现的第一块级存储装置的至少一部分,其中所述工作请求的特定速率超出与所述第一块级存储装置相关联的第一速率;
由所述客户端侧组件识别特定块级存储装置的至少一部分,预期在所述特定时间段期间指向到所述特定块级存储装置的至少一部分的工作请求的第二速率小于与所述特定块级存储装置相关联的第二速率;以及
修改所述第一块级存储装置的至少一个准入控制参数以使得所述第一多租户存储服务器能够以高于所述第一速率的速率接受指向到所述第一块级存储装置的工作请求。
9.如权利要求8所述的方法,其中所述第一存储服务器被配置来实现所述服务的多个客户端的块级存储装置。
10.如权利要求8所述的方法,其还包括由所述一个或更多个计算装置执行以下操作:
在所述修改前,验证所述第一存储服务器在所述特定时间段期间具有足够的工作负荷容量以高于所述第一速率的速率完成工作请求。
11.如权利要求8所述的方法,其中所述客户端侧组件的至少一部分在多租户计算服务的实例主机处的虚拟化管理软件栈内实现。
12.如权利要求8所述的方法,其中所述修改所述第一块级存储装置的至少一个准入控制参数包括增大与所述第一块级存储装置相关联的工作令牌桶中的令牌再填充速率。
13.如权利要求8所述的方法,其中所述第一块级存储装置的所述部分包括针对特定客户端建立的多分区块级卷的第一分区,并且其中所述特定块级存储装置的所述部分包括所述多分区块级卷的第二分区。
14.如权利要求8所述的方法,其还包括由所述一个或更多个计算装置执行以下操作:
在所述特定时间段后,将所述第一块级存储装置的特定准入控制参数复位以使得所述第一存储服务器能够以不大于所述第一速率接受工作请求。
15.如权利要求8所述的方法,其还包括由所述一个或更多个计算装置执行以下操作:
将所述第一块级存储装置附接到多个计算实例,所述多个计算实例包括在第一实例主机处的第一计算实例和在第二实例主机处的第二计算实例,其中在所述第一实例主机处例示所述客户端侧组件;
由所述第一实例主机处的所述客户端侧组件获取在所述第二实例主机处的第二客户端侧组件的工作负荷水平的指示,以确定将要对所述至少一个准入控制参数做出的改变;以及
其中所述第二客户端侧组件的所述工作负荷水平的所述指示是从所述第一存储服务器提供给所述第一实例主机处的所述客户端侧组件。
CN201580019702.7A 2014-03-14 2015-03-13 网络可访问块存储装置的协调准入控制 Active CN106233276B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/212,042 US10078533B2 (en) 2014-03-14 2014-03-14 Coordinated admission control for network-accessible block storage
US14/212,042 2014-03-14
PCT/US2015/020324 WO2015138825A1 (en) 2014-03-14 2015-03-13 Coordinated admission control for network-accessible block storage

Publications (2)

Publication Number Publication Date
CN106233276A true CN106233276A (zh) 2016-12-14
CN106233276B CN106233276B (zh) 2019-05-14

Family

ID=54070234

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580019702.7A Active CN106233276B (zh) 2014-03-14 2015-03-13 网络可访问块存储装置的协调准入控制

Country Status (9)

Country Link
US (1) US10078533B2 (zh)
EP (1) EP3117335B1 (zh)
JP (1) JP6290462B2 (zh)
KR (1) KR101957006B1 (zh)
CN (1) CN106233276B (zh)
AU (1) AU2015229200B2 (zh)
CA (1) CA2942665C (zh)
SG (1) SG11201607668SA (zh)
WO (1) WO2015138825A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107276827A (zh) * 2017-07-25 2017-10-20 郑州云海信息技术有限公司 一种分布式存储系统中Qos的实现方法及装置
CN108897620A (zh) * 2018-06-16 2018-11-27 温州职业技术学院 一种内存管理系统及其管理方法
WO2023093194A1 (zh) * 2021-11-24 2023-06-01 华为云计算技术有限公司 一种云监控方法和云管理平台
CN116401062A (zh) * 2023-04-13 2023-07-07 北京大学 一种服务器无感知资源处理方法、装置和电子设备

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10445229B1 (en) 2013-01-28 2019-10-15 Radian Memory Systems, Inc. Memory controller with at least one address segment defined for which data is striped across flash memory dies, with a common address offset being used to obtain physical addresses for the data in each of the dies
US11249652B1 (en) 2013-01-28 2022-02-15 Radian Memory Systems, Inc. Maintenance of nonvolatile memory on host selected namespaces by a common memory controller
US9329964B2 (en) * 2014-06-20 2016-05-03 Dell International L.L.C. Shaping I/O traffic by managing queue depth in fractional increments
US9542118B1 (en) 2014-09-09 2017-01-10 Radian Memory Systems, Inc. Expositive flash memory control
US10469580B2 (en) * 2014-12-12 2019-11-05 International Business Machines Corporation Clientless software defined grid
US10554749B2 (en) 2014-12-12 2020-02-04 International Business Machines Corporation Clientless software defined grid
US10432551B1 (en) * 2015-03-23 2019-10-01 Amazon Technologies, Inc. Network request throttling
US10228887B2 (en) 2015-09-09 2019-03-12 International Business Machines Corporation Considering input/output workload and space usage at a plurality of logical devices to select one of the logical devices to use to store an object
US9892075B2 (en) * 2015-12-10 2018-02-13 Cisco Technology, Inc. Policy driven storage in a microserver computing environment
US10320906B2 (en) * 2016-04-29 2019-06-11 Netapp, Inc. Self-organizing storage system for asynchronous storage service
US10032115B2 (en) * 2016-05-03 2018-07-24 International Business Machines Corporation Estimating file level input/output operations per second (IOPS)
US20180150234A1 (en) * 2016-11-28 2018-05-31 Hewlett Packard Enterprise Development Lp Cloud volume storage
CN107040591B (zh) * 2017-03-28 2020-06-19 北京小米移动软件有限公司 一种对客户端进行控制的方法及装置
JP7221585B2 (ja) * 2017-07-20 2023-02-14 富士通株式会社 情報処理装置、情報処理システム、情報処理装置制御方法及び情報処理装置制御プログラム
CN109254726A (zh) * 2018-08-16 2019-01-22 华为技术有限公司 分布式存储系统中服务质量保障方法、控制节点及系统
JP7354750B2 (ja) * 2019-10-10 2023-10-03 富士フイルムビジネスイノベーション株式会社 情報処理システム
US11321135B2 (en) * 2019-10-31 2022-05-03 Oracle International Corporation Rate limiting compliance assessments with multi-layer fair share scheduling
US11531493B2 (en) * 2019-12-19 2022-12-20 Western Digital Technologies, Inc. Request throttling in distributed storage systems

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1143228C (zh) * 1998-04-14 2004-03-24 国际商业机器公司 对服务器进行负荷管理的数据处理设备和方法
US20050055694A1 (en) * 2003-09-04 2005-03-10 Hewlett-Packard Development Company, Lp Dynamic load balancing resource allocation
CN101741912A (zh) * 2009-12-30 2010-06-16 中兴通讯股份有限公司 一种处理计算任务的方法、网络设备及分布式网络系统
CN102012790A (zh) * 2008-01-02 2011-04-13 桑迪士克以色列有限公司 具有直接用户访问的存储装置
CN102844772A (zh) * 2010-03-29 2012-12-26 亚马逊技术股份有限公司 管理用于共享资源的承诺的请求速率
US20130054948A1 (en) * 2011-08-31 2013-02-28 Microsoft Corporation Attestation Protocol for Securely Booting a Guest Operating System

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030046396A1 (en) 2000-03-03 2003-03-06 Richter Roger K. Systems and methods for managing resource utilization in information management environments
US7130917B2 (en) 2002-09-26 2006-10-31 Cisco Technology, Inc. Quality of service in a gateway
US7756995B1 (en) 2007-03-28 2010-07-13 Amazon Technologies, Inc. Regulating transmission rates
JP5000456B2 (ja) 2007-10-31 2012-08-15 ヒューレット−パッカード デベロップメント カンパニー エル.ピー. 資源管理システム、資源管理装置およびその方法
JP2011059970A (ja) * 2009-09-10 2011-03-24 Hitachi Ltd 外部接続構成におけるボリューム割り当て方法
US8458719B2 (en) 2009-12-17 2013-06-04 International Business Machines Corporation Storage management in a data processing system
US9342801B2 (en) * 2010-03-29 2016-05-17 Amazon Technologies, Inc. Managing committed processing rates for shared resources
JP5524750B2 (ja) 2010-07-23 2014-06-18 京セラ株式会社 無線端末装置及び制御方法
US9467505B2 (en) * 2010-08-27 2016-10-11 Vmware, Inc. Saturation detection and admission control for storage devices
US8565243B2 (en) 2010-11-29 2013-10-22 Red Hat, Inc. Method and apparatus for using a gossip protocol to communicate across network partitions
US20120324446A1 (en) 2011-06-17 2012-12-20 Microsoft Corporation Virtual machine image composition and signing
US8913501B2 (en) * 2012-08-16 2014-12-16 International Business Machines Corporation Efficient urgency-aware rate control scheme for multiple bounded flows
US10169121B2 (en) * 2014-02-27 2019-01-01 Commvault Systems, Inc. Work flow management for an information management system

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1143228C (zh) * 1998-04-14 2004-03-24 国际商业机器公司 对服务器进行负荷管理的数据处理设备和方法
US20050055694A1 (en) * 2003-09-04 2005-03-10 Hewlett-Packard Development Company, Lp Dynamic load balancing resource allocation
CN102012790A (zh) * 2008-01-02 2011-04-13 桑迪士克以色列有限公司 具有直接用户访问的存储装置
CN101741912A (zh) * 2009-12-30 2010-06-16 中兴通讯股份有限公司 一种处理计算任务的方法、网络设备及分布式网络系统
CN102844772A (zh) * 2010-03-29 2012-12-26 亚马逊技术股份有限公司 管理用于共享资源的承诺的请求速率
US20130054948A1 (en) * 2011-08-31 2013-02-28 Microsoft Corporation Attestation Protocol for Securely Booting a Guest Operating System

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107276827A (zh) * 2017-07-25 2017-10-20 郑州云海信息技术有限公司 一种分布式存储系统中Qos的实现方法及装置
CN108897620A (zh) * 2018-06-16 2018-11-27 温州职业技术学院 一种内存管理系统及其管理方法
WO2023093194A1 (zh) * 2021-11-24 2023-06-01 华为云计算技术有限公司 一种云监控方法和云管理平台
CN116401062A (zh) * 2023-04-13 2023-07-07 北京大学 一种服务器无感知资源处理方法、装置和电子设备
CN116401062B (zh) * 2023-04-13 2023-09-12 北京大学 一种服务器无感知资源处理方法、装置和电子设备

Also Published As

Publication number Publication date
CN106233276B (zh) 2019-05-14
CA2942665C (en) 2019-04-02
CA2942665A1 (en) 2015-09-17
AU2015229200B2 (en) 2017-09-07
SG11201607668SA (en) 2016-10-28
WO2015138825A1 (en) 2015-09-17
EP3117335A1 (en) 2017-01-18
US20150263978A1 (en) 2015-09-17
KR20160131093A (ko) 2016-11-15
JP6290462B2 (ja) 2018-03-07
US10078533B2 (en) 2018-09-18
EP3117335A4 (en) 2017-11-15
JP2017514243A (ja) 2017-06-01
EP3117335B1 (en) 2023-09-27
AU2015229200A1 (en) 2016-10-06
KR101957006B1 (ko) 2019-06-24

Similar Documents

Publication Publication Date Title
CN106233276B (zh) 网络可访问块存储装置的协调准入控制
WO2017167025A1 (zh) 一种实现任务调度的方法、装置及计算机存储介质
KR101976234B1 (ko) Paas 계층적 스케줄링 및 자동 스케일링 기법
KR101865318B1 (ko) 버스트 모드 제어
CN103064744B (zh) 一种基于SLA的面向多层Web应用的资源优化方法
US10250673B1 (en) Storage workload management using redirected messages
US11150944B2 (en) Balancing mechanisms in ordered lists of dispatch queues in a computational device
CN109976917A (zh) 一种负载调度方法、装置、负载调度器、存储介质及系统
KR20140109939A (ko) Paas 자원들, 작업들 및 스케줄링의 분리 기법
CN110221920B (zh) 部署方法、装置、存储介质及系统
CN108900626A (zh) 一种云环境下数据存储方法、装置及系统
Himthani et al. Comparative analysis of VM scheduling algorithms in cloud environment
Kim et al. Virtual machines placement for network isolation in clouds
Wan et al. Utility-driven share scheduling algorithm in hadoop
US10721181B1 (en) Network locality-based throttling for automated resource migration
Zedan et al. Load balancing based active monitoring load balancer in cloud computing
Kamboj et al. A novel approach of optimizing performance using K-means clustering in cloud computing
Wei et al. A novel scheduling mechanism for hybrid cloud systems
Patel et al. A new approach for grid load balancing among heterogeneous resources with bandwidth consideration
CN112363808B (zh) 一种基于双游标控制机制的虚拟机动态部署方法
US12014061B2 (en) Capacity and performance optimization in non-homogeneous storage
Shan et al. Heterogeneous MacroTasking (HeMT) for Parallel Processing in the Public Cloud
Suleiman Service-Level-Driven Load Scheduling and Balancing in Multi-Tier Cloud Computing
Rao Resource Allocation in Physically Distributed System using Non-Cooperative Game Theory
Raj et al. Resource Provisioning Using Batch Mode Heuristic Priority with Round Robin Scheduling

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant