基于分布式存储的QoS方法及系统
文献发布时间:2023-06-19 10:41:48
技术领域
本发明涉及QoS技术领域,特别是涉及一种基于分布式存储的QoS方法及系统。
背景技术
QoS(Quality of Service)即服务质量或配额,为服务系统提供针对不同用户、不同数据流的不同权重服务的能力。在电信领域,多媒体服务领域内QoS能提供不同需求的定制服务,提供不同优先级;在存储领域,QoS能够根据系统配置,对I/O数据流按照权重进行资源分配,从而提高存储的服务质量。云计算时代,由于数据量规模庞大、资源类型复杂及云计算构建具有可变性和不可预测性,资源调度变得更加复杂且更为重要。
在分布式存储领域,块存储提供了将卷映射到主机使用的能力。由于资源的有限性,分布式存储系统同样需要对资源进行服务质量管理。当下流行的分布式存储系统中,针对块存储的QoS的定制算法存在实现成本过高、实现复杂等问题。
现有QoS算法主要基于两种算法,令牌桶算法及dmClock算法。
令牌桶算法是网络流量整形和速率限制中最常使用的一种算法。经典算法的原理是通过监督流入存储端端口的流量速率,对超出的流量进行限制,从而调配各客户端I/O,使得端口IOPS控制在预设范围。大小固定的令牌桶可自行按照系统预设的速度源源不断地产生令牌。当桶中的令牌数量超过最大容量限制,新的令牌将会被舍弃。如果令牌桶中存在令牌,则允许发送流量或接受I/O;而如果令牌桶中不存在令牌,则不允许发送流量或接受I/O。
dmClock算法是mClock算法的分布式版本。mClock算法将QoS定义为保证I/O资源的界定参数,分别是权重(weight或proportion)、预留(reservation)和上限(limit)等等。其基本思想是首先保证预留IOPS,然后对于没有超过上限IOPS的资源,按照权重分配IOPS。当资源I/O请求到达后,根据QoS三个参数会计算这三个指标,公式为:
其中,
dmClock算法将应用场景变为了分布式存储,虚拟机将I/O请求发送到存储集群的某一个节点上。其指标公式改进为:
其中,ρ
发明内容
本发明要解决的技术问题是提供一种基于分布式存储的QoS方法及系统,使在某客户端出现突发IO请求时,能使其在不影响预留的情况下,更快相应该客户端的请求。
为解决上述技术问题,本发明提供了一种基于分布式存储的QoS方法,所述方法包括:获取到来自客户端的IO请求时,将获取到的IO请求存入依客户端构建的二级队列;对每个客户端所对应的请求队列,构建预留标签二叉树、权重标签二叉树及上限标签二叉树,其中,且预留标签二叉树、权重标签二叉树及上限标签二叉树均根据节点的标签取值,确定请求队列中请求在其中的存储位置;根据处于预留标签二叉树或者权重标签二叉树的节点是否符合出队条件,确定请求是否出队。
在一些实施方式中,预留标签二叉树、权重标签二叉树及上限标签二叉树均为完全二叉树。
在一些实施方式中,预留标签二叉树中的标签取值,根据如下公式调整:
其中,
在一些实施方式中,对于预留标签二叉树,出队条件包括:若当其根节点的队首元素的预留标签小于或等于当前时间,则可以出队。
在一些实施方式中,权重标签二叉树中的标签取值,根据如下公式调整:
其中,W
在一些实施方式中,对于权重标签二叉树,出队条件包括:某个节点的队元素的权重标签小于或等于当前时间,则将权重标签二叉树中对应节点的ready变为true,并上浮到根节点;并将上限标签二叉树中对应节点的ready变为true,并下沉到叶子节点。
在一些实施方式中,上限标签二叉树的标签取值,根据如下公式调整:
其中,
在一些实施方式中,二级队列包括:客户端队列,以及与客户端队列中的客户端相对应的请求队列。
此外,本发明还提供了一种基于分布式存储的QoS系统,所述系统包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现根据前文所述的基于分布式存储的QoS方法。
采用这样的设计后,本发明至少具有以下优点:
该方案通过预设一个自适应可调节的参数并以此设计了一种实现方式,提高了系统的适应性;当面对突发I/O状况时,能更为及时合理地处理请求。
附图说明
上述仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,以下结合附图与具体实施方式对本发明作进一步的详细说明。
图1是本发明实施例提供的二级队列的原理示意图;
图2是本发明实施例提供的出队流程的流程示意图;
图3是本发明实施例提供的基于分布式存储的QoS系统的结构示意图。
具体实施方式
以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
本专利从IOPS的角度出发,从小块数据(典型如4KB)来设计,给出如下方案。
服务器设计:
1.当客户端发来I/O请求时,请求根据客户端构建一个二级队列,一级为客户端队列,二级为客户端的请求队列。二级队列如图1所示。
当有新的客户端发来请求时,将客户端入队,并将其请求编入队列作为其二级队列。
2.而对于不同客户端的请求,利用其模板的标签值则构建三棵完全二叉树。
预留标签二叉树:以每个二级队列的队首元素的预留标签为内容(如R1、R2、R3……),依次加入二叉树,值小的上浮至根节点,值大的下沉至叶子节点。
权重标签二叉树:以每个二级队列的队首元素的权重标签为内容(如W1、W2、W3……),依次加入二叉树,值小的上浮至根节点,值大的下沉至叶子节点。所有树节点包含一个布尔值ready,代表可出队的状态,初始状态均为false。
上限标签二叉树:以每个二级队列的队首元素的上限标签为内容(如L1、L2、L3……),依次加入二叉树,值小的上浮至根节点,值大的下沉至叶子节点。所有树节点包含一个布尔值ready,代表是否满足上限,初始状态均为false。
随着时间推移,如果一个请求的权重标签小于或等于当前时间:a.将权重二叉树中对应节点的ready变为true,并上浮到根节点;b.将上限二叉树中对应节点的ready变为true,并下沉到叶子节点。
3.出队的流程
a.预留二叉树根节点的出队条件为若当其根节点的队首元素的预留标签小于或等于当前时间,则可以出队。
b.ready标记的调整依据为某个节点的队元素的权重标签小于或等于当前时间,则将权重二叉树中对应节点的ready变为true,并上浮到根节点;并将上限二叉树中对应节点的ready变为true,并下沉到叶子节点。
c.权重二叉树的根节点的出队条件为若当其根节点的队首元素的ready值为true,则可以出队。
d.出队后二叉树的调整,不论在哪个阶段,当有一个客户端的请求出队后,则该客户端的请求队列的元素全部前移,则二叉树中标记值也会受影响,因此需要重新调整二叉树的ready值并上浮或下沉节点。
客户端设计:
1.对不同的客户端,预设一套QoS模板,包括r标签(resevation),代表预留值,l标签(limit)代表上限标签,以及w标签(weight)代表权重,其中权重标签w越大代表优先级越高,将分得更多资源。
2.当突发I/O的情况频发时,客户端会在短时间内下发大量I/O请求。为此需要给客户端设置有一个可调整的参数s。s初值为0,当客户端出现突发I/O时,则s值增加。
3.客户端统计统计当前请求前发送到其他服务器的请求个数,预留标签的记为ρ,权重和上限标签的记为δ,这两个值作为当前请求的延迟。
客户端发送请求时将以上数据代入如下公式,作为QoS模板一并发送给服务器进行调度。
图3示出了基于分布式存储的QoS系统的结构。参见图3,例如,所述基于分布式存储的QoS系统300可以用于充当分布式存储系统中的服务端IO调度装置。如本文所述,基于分布式存储的QoS系统300可以用于在分布式存储系统的服务器中实现对IO请求的调度功能。基于分布式存储的QoS系统300可以在单个节点中实现,或者基于分布式存储的QoS系统300的功能可以在网络中的多个节点中实现。本领域的技术人员应意识到,术语基于分布式存储的QoS系统包括广泛意义上的设备,图3中示出的基于分布式存储的QoS系统300仅是其中一个示例。包括基于分布式存储的QoS系统300是为了表述清楚,并不旨在将本发明的应用限制为特定的基于分布式存储的QoS系统实施例或某一类基于分布式存储的QoS系统实施例。本发明所述的至少部分特征/方法可以在网络装置或组件,例如,基于分布式存储的QoS系统300中实现。例如,本发明中的特征/方法可以采用硬件、固件和/或在硬件上安装运行的软件实现。基于分布式存储的QoS系统300可以是任何通过网络处理,存储和/或转发数据帧的设备,例如,服务器,客户端,数据源等。如图3所示,基于分布式存储的QoS系统300可以包括收发器(Tx/Rx)310,其可以是发射器,接收器,或其组合。Tx/Rx 310可以耦合到多个端口350(例如上行接口和/或下行接口),用于从其他节点发送和/或接收帧。处理器330可耦合至Tx/Rx 310,以处理帧和/或确定向哪些节点发送帧。处理器330可以包括一个或多个多核处理器和/或存储器设备332,其可以用作数据存储器,缓冲区等。处理器330可以被实现为通用处理器,或者可以是一个或多个专用集成电路(application specificintegrated circuit,简称ASIC)和/或数字信号处理器(digital signal processor,简称DSP)的一部分。
以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,本领域技术人员利用上述揭示的技术内容做出些许简单修改、等同变化或修饰,均落在本发明的保护范围内。
- 基于分布式存储的QoS方法及系统
- 一种基于Ceph分布式存储Osd端数据Recovery的QoS控制方法