CN108881348B - 服务质量控制方法、装置和存储服务器 - Google Patents
服务质量控制方法、装置和存储服务器 Download PDFInfo
- Publication number
- CN108881348B CN108881348B CN201710340035.3A CN201710340035A CN108881348B CN 108881348 B CN108881348 B CN 108881348B CN 201710340035 A CN201710340035 A CN 201710340035A CN 108881348 B CN108881348 B CN 108881348B
- Authority
- CN
- China
- Prior art keywords
- client
- request
- information
- storage server
- volume group
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols 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]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
- H04L67/61—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources taking into account QoS or priority requirements
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请公开一种服务质量控制方法、装置和存储服务器,在多个存储服务器和客户端间设置多个代理,代理间能够通信且能够获得卷组与代理间的对应关系,该方法应用于代理,包括:接收访问对应卷组的客户端IO请求,对客户端IO请求进行统计得到统计信息;其中,统计信息包括客户端IO请求的数目和对应的输出阶段信息;将客户端IO请求和统计信息发送至存储服务器,使存储服务器为客户端IO请求计算预留时间标签、权重时间标签和上限时间标签,并对客户端IO请求进行处理;接收存储服务器发送的客户端IO请求对应的输出阶段信息,更新对应卷组的统计信息。本申请实现了dmClock算法支持卷组QoS,提高了服务质量,满足了应用需求。
Description
技术领域
本申请涉及计算机技术领域,具体涉及一种服务质量控制方法、装置和存储服务器。
背景技术
分布式存储系统是由多台存储服务器组成的存储集群。分布式存储具有高可靠性,高可用性,快速存取,易于扩展等优点。由于分布式存储系统将数据分散存储在各存储服务器的不同存储设备中,当多个用户同时访问同一存储设备时,就会引起存储资源的竞争问题。例如,假设某分布式存储系统有两个用户,它们分别提供联机事务处理(On-LineTransaction Processing,简称OLTP)业务和备份业务,存储资源是一定的,备份业务的数据量较大并且对存储服务器的使用较频繁,所以备份业务会占用大量的存储资源,导致OLTP业务无法获得足够的存储资源而影响业务的正常运行。
鉴于这一问题,分布式存储领域提出了存储服务质量QoS(Quality of Service)算法,存储QoS算法的目标是合理分配存储资源,解决部分业务独占存储资源致使其它业务无法正常工作的问题。
现有技术有多种实现存储QoS的算法,例如,典型的漏桶和令牌桶算法,但每种算法都有一定的局限性,漏桶和令牌桶算法只能实现限速功能。现有技术中有一种mClock算法,mClock算法是2010年发表的一篇论文《mClock:handling throughput variabilityfor hypervisor IO scheduling》中提出的算法。mClock算法包含三个主要参数:预留、上限和权重(或称比例)。预留是保证给定存储块的最低性能,上限是限制给定存储块的最高性能,权重是在满足预留和上限的前提下为不同用户提供不同的性能。mClock算法采用为每个IO请求分配三个时间标签来同时支持服务质量QoS的预留、上限和权重功能。通过mClock算法能够合理分配存储资源,保证存储服务质量。
在存储领域,LUN(Logical Unit Number)是相对于物理存储设备的一个逻辑设备。由一组LUN组成的集合称为卷组,卷组相当于一个存储池,卷组内的每个LUN物理上可以是不连续的,但是将多个LUN加入一个卷组后,就形成了存储空间连续的存储池。
卷组QoS是指将存储QoS算法应用于卷组内的所有LUN,不关心卷组内不同LUN的IO分配,只关心卷组整体IO分配情况。和存储QoS相同,卷组QoS也包括:预留、上限和权重三个参数,以卷组QoS的上限控制为例,假设一个卷组配置的上限每秒进行输入输出操作的次数(Input/Output Operations Per Second,IOPS)为10,则存储服务器在应用卷组QoS处理访问同一个卷组的IO请求时,不关心卷组内某个LUN的IOPS,只要保证卷组内所有LUN的IOPS之和不超过10即可。
dmClock算法将mClock算法从单机环境扩展到了分布式存储系统环境,从而实现分布式存储系统的QoS控制。
dmClock算法应用于分布式存储系统中实现存储QoS,根据前面对mClock算法的说明可知,要想实现卷组QoS,如实现卷组QoS中的预留功能,即保证卷组的最低性能,就需要知道一个卷组的IO请求的处理情况,换句话说,就需要知道卷组的全局实时统计信息。但是在分布式存储系统中,客户端IO请求可能发送到不同存储服务器上,这些存储服务器之间是独立的,可能并没有交集,一个存储服务器无法知道该存储服务器没有处理的,访问同一个卷组的那些客户端IO请求的处理阶段,即,无法得到该卷组的全局实时统计信息,也就无法根据统计信息为访问同一个卷组的客户端IO请求计算时间标签,进而无法实现卷组QoS中的预留控制等功能,不能满足实际需求。
发明内容
本申请提供了一种服务质量控制方法和装置,以解决现有dmClock算法不支持卷组QoS,不能满足实际需求的问题,本申请还提供了一种存储服务器。
根据本申请的一个方面,提供了一种服务质量控制方法,在多个存储服务器和客户端之间设置多个代理,所述代理之间能够通信,且所述代理能够获得卷组与所述代理之间的对应关系,该方法应用于所述代理,包括:
接收访问对应卷组的客户端IO请求;
对访问对应卷组的客户端IO请求进行统计得到统计信息;其中,统计信息包括:访问对应卷组的客户端IO请求的数目以及客户端IO请求对应的输出阶段信息;
将客户端IO请求和统计信息发送至存储服务器,以使所述存储服务器为所述客户端IO请求计算预留时间标签、权重时间标签和上限时间标签,并对所述客户端IO请求进行处理;
接收所述存储服务器发送的所述客户端IO请求对应的输出阶段信息,更新对应卷组的所述统计信息。
根据本申请的另一个方面,提供了一种服务质量控制装置,该装置应用于设置在多个存储服务器和客户端之间的多个代理,所述代理之间能够通信,且所述代理能够获得卷组与所述代理之间的对应关系,包括:
IO接收模块,适于接收访问对应卷组的客户端IO请求,
IO统计模块,适于对访问对应卷组的客户端IO请求进行统计得到统计信息;其中,统计信息包括:访问对应卷组的客户端IO请求的数目以及客户端IO请求对应的输出阶段信息;
交互模块,适于将客户端IO请求和统计信息发送至存储服务器,以使所述存储服务器为所述客户端IO请求计算预留时间标签、权重时间标签和上限时间标签,并对所述客户端IO请求进行处理;
所述交互模块,还适于接收所述存储服务器发送的所述客户端IO请求对应的输出阶段信息,
所述IO统计模块,还适于根据客户端IO请求对应的输出阶段信息更新对应卷组的所述统计信息。
根据本申请的又一个方面,提供了一种存储服务器,包括:
通信模块,适于接收代理发送的访问对应卷组的客户端IO请求和统计信息,
其中,所述代理设置在多个存储服务器和客户端之间,所述代理之间能够通信,且所述代理能够获得卷组与所述代理之间的对应关系,所述统计信息包括:访问对应卷组的客户端IO请求的数目以及客户端IO请求对应的输出阶段信息,
IO处理模块,适于为所述客户端IO请求计算预留时间标签、权重时间标签和上限时间标签,并对所述客户端IO请求进行处理;
所述通信模块,还适于将所述客户端IO请求对应的输出阶段信息发送至所述代理,使得所述代理更新对应卷组的所述统计信息。
本申请的有益效果是:本申请实施例服务质量控制方案,通过在多个存储服务器和客户端之间设置多个代理,代理之间能够通信且代理能够获得卷组与代理之间的对应关系,代理接收访问对应卷组的客户端IO请求,对客户端IO请求进行统计得到统计信息,将客户端IO请求和统计信息发送至存储服务器,接收存储服务器发送的客户端IO请求对应的输出阶段信息,更新对应卷组的所述统计信息。从而代理能够得到访问同一个卷组的所有客户端IO请求的信息并进行统计,进而实现根据代理统计的统计信息为客户端IO请求计算时间标签,实现卷组QoS的预留、上限和权重控制功能,提升分布式存储系统的服务质量,满足实际需求。
附图说明
图1是本申请一个实施例的服务质量控制方法的流程示意图;
图2是本申请一个实施例的分布式存储系统的逻辑示意图;
图3是本申请一个实施例的第一客户端的读请求的处理流程示意图;
图4是本申请一个实施例的第二客户端的读请求的处理流程示意图;
图5是本申请一个实施例的第一客户端的写请求的处理流程示意图;
图6是本申请一个实施例的第二客户端的写请求的处理流程示意图;
图7是本申请一个实施例的代理的硬件结构图;
图8是图7所示一个服务质量控制装置的功能框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
本申请的设计构思在于:针对现有dmClock算法不支持卷组QoS的问题,本申请实施例通过在分布式存储系统的多个存储服务器和客户端之间设置多个代理,利用代理接收或者转发访问同一个卷组的客户端IO请求并接收存储服务器返回的客户端IO请求的对应的输出阶段信息,从而代理能够对访问同一个卷组的客户端IO请求进行实时统计,得到统计信息,在得到统计信息后,将实时统计信息和后面收到的客户端IO请求一并发送至存储服务器,使存储服务器能够利用dmClock算法计算客户端IO请求的预留时间标签、上限时间标签和权重时间标签,进而对客户端IO请求进行处理,实现dmClock算法支持卷组QoS,优化了分布式存储系统的服务质量,满足实际应用需求。
由于本申请实施例的技术方案基于dmClock算法实现,这里先对mClock算法和dmClock算法进行简要说明。
根据论文《mClock:handling throughput variability for hypervisor IOscheduling》可知,mClock算法的过程大致如下:假设存储服务器在t0时刻开始接收客户端IO请求,并在t1时刻开始输出客户端IO请求进行具体处理,那么对于这一时间段内接收到的各客户端IO请求,为各客户端IO请求计算三个时间标签,分别为预留时间标签,上限时间标签和权重时间标签,并将客户端IO请求保存到存储服务器上的一个客户端IO请求集合中。时间标签代表IO请求按照卷组QoS控制要求正常应该被处理的时刻。
这些时间标签中,如果客户端IO请求对应的时间标签的值是大于当前时间的,对于预留时间标签来说,表示这个客户端IO请求到达时,用户的预留已经满足,对于上限时间标签来说,表示这个客户端IO请求到达时,已经达到该用户的上限,不能再进行存储资源分配。如果对应的时间标签的值是小于等于当前时间,那么对于预留时间标签来说,表示这个客户端IO请求到达时,用户的预留要求还没有满足,对于上限时间标签来说,表示客户端IO请求到达时,没有达到用户的上限,还可以继续为其IO请求分配存储资源。权重时间标签相对特殊,它不与当前时间做比较。权重时间标签代表了用户的权重,如果用户的权重越大,那么预定时间段内,存储服务器收到的该用户的IO请求数目越多。
当从客户端IO请求集合中输出客户端IO请求进行处理时,mClock算法的基本原则是时间标签越小,越早输出。具体输出时分两个阶段,第一个阶段是基于预留的阶段(即,constrained-based phase),第二个阶段是基于权重的阶段(即,weight-based phase)。
其中,基于预留的阶段的处理过程是:比较客户端IO请求集合中每个客户端IO请求的预留时间标签和当前时间(本实施例中即为t1),如果预留时间标签不大于当前时间,则将不大于当前时间的客户端IO请求从客户端IO请求集合中输出进行后续的处理,那么对于这一部分客户端IO请求而言,它们对应的输出阶段信息即为基于预留的阶段信息。
需要说明的是,基于预留的阶段是mClock算法为了尽力保证各用户的预留而设置的,如果存储服务器接收到的一个客户端IO请求,它的预留时间标签不大于当前时间,说明收到该客户端IO请求时,用户的预留还没有被满足,应当先满足用户的预留。本申请所称的用户通常是与业务相关的,指某一类业务的用户。在没有特别说明的情况下,本申请中所述的“客户端IO请求”都是指对存储系统中的存储资源的输入或者输出请求。
当按照上述方式处理后,客户端IO请求集合中不存在预留时间标签不大于当前时间的客户端IO请求,并且存储服务器还有多余的处理能力来处理客户端IO请求,则进入mClock算法的第二个阶段,即,基于权重的阶段。
基于权重的阶段的处理原则是:按照包括客户端IO请求的权重时间轴上,权重时间标签从小到大的顺序从客户端IO请求集合中输出对应的客户端IO请求进行后续处理,并且排除那些上限时间标签大于当前时间的客户端IO请求。从而实现在满足了各客户端IO请求的预留之后按照权重分配存储服务器的处理能力。那么,对于这一部分客户端IO请求而言,它们的输出阶段信息即为基于权重的阶段。
对于每个客户端IO请求,mClock算法根据下列标签计算公式分别计算对应的时间标签的值。
其中,公式(1)用于计算一个客户端IO请求的预留时间标签,公式(1)中的表示客户端i的第r个IO请求的预留时间标签,表示客户端i的前一个IO请求的预留时间标签,ri表示客户端i的预留值,t表示当前时间。
如果一个客户端IO请求是存储服务器接收到的该客户端的第一个IO请求,则该客户端IO请求的预留时间标签、上限时间标签和权重时间标签均为接收到该客户端IO请求的时刻。
由此可知,本质上mClock算法是存储服务器用来确定每个客户端IO请求被处理的顺序的。客户端IO请求按照接收客户端IO请求的顺序存储到一个集合中,然后按照客户端的QoS参数(预留、上限和权重)配置输出集合。将客户端IO请求输出集合时,比较当前时间和客户端IO请求的时间标签,如果客户端IO请求时间标签不大于当前时间,则客户端IO请求可以输出集合,否则客户端IO请求不可以输出。
上述mClock算法用于单机环境,而由mClock算法改进的dmClock算法用于分布式存储系统。根据分布式存储系统的将数据分散存储在不同存储服务器上的特点,dmClock对mClock算法的时间标签计算公式做了修改,得到如下公式:
公式(4)与前述公式(1)的区别仅在于算式ρi/ri中的分子为ρi而不是1,这里的ρi表示预定时间段内,客户端i的IO请求中,输出阶段信息是基于预留的阶段信息的IO请求的统计值,即,有多少IO请求是在基于预留的阶段从分布式存储系统的其它存储服务器上的客户端IO请求集合中输出并被处理的。这里的预定时间段是指,当前存储服务器收到该客户端的第一个IO请求时起到收到当前的客户端IO请求为止的时间段。
公式(5)与前述公式(2)的区别仅在于算式δi/li中的分子为δi而不是1,这里的δi表示预定时间段内,客户端i的IO请求中,输出阶段信息是基于权重的阶段信息的IO请求的统计值,即,有多少IO请求是在基于权重的阶段从分布式存储系统的其它存储服务器上的客户端IO请求集合中输出并被处理的。这里的预定时间段是指,当前存储服务器收到该客户端的第一个客户端IO请求时起到收到当前的客户端IO请求为止的时间段。
公式(6)与前述公式(3)的区别仅在于算式δi/wi中的分子为δi而不是1,这里的δi表示预定时间段内,客户端i的IO请求中,输出阶段信息是基于权重的阶段信息的IO请求的统计值,即,有多少IO请求是在基于权重的处理阶段从分布式存储系统的其它存储服务器上的客户端IO请求集合中输出并被处理的。这里的预定时间段是指,当前存储服务器收到该客户端的第一个客户端IO请求时起到收到当前的客户端IO请求为止的时间段。
由上述说明可知,dmClock算法要想支持卷组QoS,就需要获取访问同一个卷组的客户端IO请求的统计信息,这样才能计算访问该卷组每个客户端IO请求的预留时间标签、上限时间标签和权重时间标签,进而根据这些时间标签以卷组为单位,对访问该卷组的客户端IO请求进行预留控制,上限控制和权重控制,实现卷组QoS。
有一种实现卷组QoS的方案是这样的:在分布式存储系统和用户间增加多个存储虚拟机SVM(Storage Virtual Machine),客户端IO请求先到达SVM然后再由SVM发送至存储服务器。这种处理方式类似于单机存储模型。其缺点也是明显的,即,只能支持卷组QoS的上限控制,而不支持卷组QoS的预留控制和权重控制。这是由于,卷组QoS的上限控制是通过统计访问卷组的客户端IO请求的数目,如果这一数目超过了为该卷组配置的上限值时,则直接暂停对应卷组的IO处理来实现的。可知,这种控制只需要根据统计的访问卷组的客户端IO请求的统计值和一个预设的上限值的比较结果即可实现。但是,要想实现卷组QoS的预留控制和权重控制,则需要通过降低访问其他卷组或者其他LUN的客户端IO请求来保证访问该卷组的客户端IO请求的处理,如此,不仅需要根据访问单个卷组的客户端IO请求还需要根据访问其他卷组或其他LUN的客户端IO请求进行控制。又由于分布式存储系统中设置了多个SVM,每个SVM都只负责访问一部分LUN或者一部分卷组的客户端IO请求,各个SVM之间是独立的,所以无法对其他SVM负责的客户端IO请求进行限制,也就无法支持卷组QoS的预留控制和权重控制。
对此,本申请实施例提供了一种服务质量控制方案,以下结合实施例对本申请的技术方案的实现过程进行具体说明。
参见图1,为本申请一个实施例的服务质量控制方法的流程示意图,服务质量控制方法应用于代理,包括如下步骤:
步骤S101,在多个存储服务器和客户端之间设置多个代理,所述代理之间能够通信,且所述代理能够获得卷组与所述代理之间的对应关系;
步骤S102,接收访问对应卷组的客户端IO请求;
步骤S103,对访问对应卷组的客户端IO请求进行统计得到统计信息;其中,统计信息包括:访问对应卷组的客户端IO请求的数目以及客户端IO请求对应的输出阶段信息;
步骤S104,将客户端IO请求和统计信息发送至存储服务器,以使所述存储服务器为所述客户端IO请求计算预留时间标签、权重时间标签和上限时间标签,并对所述客户端IO请求进行处理;
步骤S105,接收所述存储服务器发送的所述客户端IO请求对应的输出阶段信息,更新对应卷组的所述统计信息。
本实施例中,步骤S105中的接收存储服务器发送的所述客户端IO请求对应的输出阶段信息包括:接收存储服务器在基于预留的阶段处理客户端IO请求时发送的基于预留的阶段信息;基于预留的阶段信息中包括:客户端IO请求的标识信息以及指示客户端IO请求的输出阶段的信息,或者,接收存储服务器在基于权重的阶段处理客户端IO请求时发送的基于权重的阶段信息;基于权重的阶段信息中包括:客户端IO请求的标识信息以及指示客户端IO请求的输出阶段的信息。步骤S105中的更新对应卷组的统计信息包括:根据客户端IO请求对应的基于预留的阶段信息,更新统计信息中基于预留的阶段信息对应的客户端IO请求数目,或者,根据客户端IO请求对应的基于权重的阶段信息,更新统计信息中基于权重的阶段信息对应的客户端IO请求数目。
由图1所示可知,本申请实施例的服务质量控制方法通过在多个存储服务器和客户端之间设置多个代理,利用代理接收访问对应的卷组的客户端IO请求,对访问对应卷组的客户端IO请求进行统计得到统计信息;将客户端IO请求和统计信息一并发送至存储服务器,从而存储服务器能够根据统计信息为收到的客户端IO请求计算预留时间标签、上限时间标签和权重时间标签,并对客户端IO请求进行处理。由于在存储服务器和客户端之间设置了代理,访问同一个卷组的客户端IO请求先发送到代理上,再由代理将客户端IO请求发送到存储服务器,另外,代理接收存储服务器在对客户端IO请求处理后返回的客户端IO请求对应的输出阶段信息,这样代理能够统计访问同一个卷组的所有客户端IO请求以及客户端IO请求的输出阶段得到统计信息,实现了dmClock算法对卷组的支持,提高了存储系统的服务质量,满足了实际需求。
考虑到代理的性能以及实际统计需求,对一个卷组而言,访问该卷组的客户端IO请求的统计工作由一个代理作为负责代理进行统计即可,所以在本实施例中,对多个代理的角色进行了划分,具体的,代理分为负责代理和非负责代理。负责代理是负责对访问对应卷组的客户端IO请求进行统计的代理。
本实施例中,负责代理,接收访问对应卷组的客户端IO请求,和/或接收非负责代理转发的访问对应卷组的客户端IO请求或客户端IO请求对应的通知消息;对访问对应卷组的客户端IO请求进行统计得到统计信息,并将客户端IO请求和统计信息发送至存储服务器;接收存储服务器发送的客户端IO请求对应的输出阶段信息,更新对应卷组的统计信息。
非负责代理,接收访问对应卷组的客户端IO请求,将访问对应卷组的客户端IO请求转发至负责代理,或者将接收的访问对应卷组的客户端IO请求发送至存储服务器,并发送通知消息至负责代理,通知消息中包括:客户端IO请求的标识信息,非负责代理的标识信息以及存储服务器的地址信息。
在本实施例中,负责代理和非负责代理都能够接收访问对应卷组的客户端IO请求,当访问对应卷组的客户端IO请求被分发到负责代理后,负责代理将客户端IO请求和负责代理统计的统计信息一并发送到存储服务器上。当访问对应卷组的客户端IO请求被分发到非负责代理后,非负责代理将客户端IO请求转发到负责代理上,由负责代理对客户端IO请求进行统计,或者,非负责代理也可以将客户端IO请求直接发送到存储服务器上并向负责代理发送通知消息,这样负责代理在接收到非负责代理发送的客户端IO请求对应的通知消息(通知消息中包括了客户端IO请求的标识信息,非负责代理的标识信息以及存储服务器的地址信息)后,将负责代理统计的统计信息发送到客户端IO请求被发送到的存储服务器上。
对于多个代理,本实施例提供了一种确定何者为负责代理的方式,具体的,多个代理启动后,向一个服务进程发送查询请求,以获得该代理与卷组之间的对应关系以及代理的角色信息,角色信息用于指示代理作为负责代理还是非负责代理。
具体的,代理启动后,当第一次收到访问一个卷组的客户端IO请求时向外部的一个服务进程发送查询请求,查询请求中包括卷组的标识信息。服务进程按照先到先得的策略确定负责代理。即,服务进程根据收到查询请求的时间,将最早查询请求对应的代理确定为该卷组对应的负责代理,实际应用中,服务进程可以维护卷组和负责代理对应关系表,在该卷组和负责代理对应关系表中记录每个卷组和其对应的负责代理的关系。例如,维护卷组和负责代理对应关系表1,其中记录卷组VG1对应的负责代理为代理A,卷组VG2对应的负责代理为代理B等等。
服务进程确定出负责代理后,发送第一角色信息给最早查询请求对应的代理,第一角色信息指示最早查询请求对应的代理为负责代理。服务进程向后续收到的查询请求对应的代理发送第二角色信息,第二角色信息指示后续查询请求对应的代理为非负责代理并且指示该卷组对应的负责代理。
如此,每个代理在收到角色信息后能够知道自己的角色,并按照角色执行相应的工作。
考虑到负责代理有可能发生宕机等故障而无法工作,为了保证客户端IO请求统计的稳定性和可靠性,本实施例中,服务进程还可以定期或不定期的与负责代理通信,获取负责代理的状态,当服务进程监测到负责代理故障时,将卷组和负责代理对应关系表中记录的卷组和其对应的负责代理的关系删除,并向非负责代理发送解除通知消息,解除通知消息指示解除卷组和负责代理的对应关系,各非负责代理收到解除通知消息后保存解除通知消息,并当再次收到访问一个卷组的客户端IO请求时,重新向服务进程发送查询请求,如此,服务进程可以根据先到先得策略重新确定卷组对应的负责代理。
在确定了代理的角色之后,由负责代理执行如下工作:
接收访问对应卷组的读请求,
将读请求和统计信息一并发送至存储服务器;
接收存储服务器在对读请求处理后发送的读请求对应的输出阶段信息,并更新统计信息中相应输出阶段信息对应的客户端IO请求数目;
接收存储服务器发送的读响应信息,返回读响应信息至发送读请求的客户端;和/或
接收访问对应卷组的写请求,
将写请求和统计信息一并发送至存储服务器;
接收存储服务器在对写请求处理后发送的写请求对应的输出阶段信息,并更新统计信息中相应输出阶段信息对应的客户端IO请求数目;
接收存储服务器发送的写响应信息,返回写响应信息至发送写请求的客户端。
也就是说,对于负责代理,其工作内容包括第一,直接接收客户端发送的访问对应卷组的客户端IO请求,然后将客户端IO请求发送至存储服务器。第二,接收非负责代理转发的访问对应卷组的客户端IO请求,然后将客户端IO请求发送至存储服务器,第三,是统计访问对应卷组的客户端IO请求,得到统计信息,将统计信息发送至存储服务器。
本实施例中,负责代理对访问对应卷组的客户端IO请求进行统计得到统计信息具体实现过程如下:首先,负责代理在收到一个客户端IO请求后,记录该客户端IO请求是访问对应卷组的第几个请求,如果是第一个客户端IO请求,则直接发送客户端IO请求到存储服务器并通知存储服务器这是访问对应卷组的第一个客户端IO请求。
存储服务器根据接收到的客户端IO请求的时间,确定客户端IO请求的预留时间标签,权重时间标签和上限时间标签,并将客户端IO请求保存的客户端IO请求集合中,当到达该第一个客户端IO请求的输出时间时,确定出该第一个客户端IO请求对应的输出阶段信息,这里的输出阶段有两种,分别是前述的基于预留的阶段和基于权重的阶段。然后返回输出阶段信息至负责代理。
负责代理根据客户端IO请求对应的输出阶段信息,这里假设输出阶段信息为基于预留的阶段信息,将统计信息中基于预留的阶段对应的客户端IO请求数目加1。
后续,当负责代理再次收到一个客户端IO请求后,即,访问对应卷组的第二个客户端IO请求,负责代理将第二个客户端IO请求以及前面统计得到的统计信息(即,有1个客户端IO请求在基于预留的阶段被处理了)一并发送至存储服务器。存储服务器根据前述公式(4)-(6)分别计算第二个客户端IO请求预留时间标签,上限时间标签和权重时间标签,并进行后续处理,然后返回第二个客户端IO请求的输出阶段信息。如此,对于访问对应卷组的每个客户端IO请求,负责代理都进行统计,从而实现了dmClock算法支持卷组QoS,提高了存储服务器的服务质量。这里的基于预留的处理阶段信息和基于权重的处理阶段信息在前述已有介绍,在此不再赘述。
本实施例中非负责代理具体执行如下工作:
接收访问对应卷组的写请求,
将写请求发送至存储服务器,并发送通知消息至负责代理,以使负责代理根据接收到的通知消息,将统计信息发送至存储服务器;
接收存储服务器发送的写响应信息,返回写响应信息至发送写请求的客户端;和/或
接收访问对应卷组的读请求,
转发读请求至负责代理,以使负责代理将统计信息以及读请求一并发送至存储服务器;
接收存储服务器发送的读响应信息,返回读响应信息至发送读请求的客户端。
由前述说明可知,对于非负责代理,其需要将自己接收到的访问该卷组的客户端IO请求转发到负责代理,或者将客户端IO请求对应的通知消息发送至负责代理,以便负责代理能够以卷组为单位,统计访问该卷组的所有客户端IO请求,得到统计信息。
实际应用中,当卷组内的LUN的数量较多或者访问卷组的客户端IO请求较频繁时,还需要考虑请求的转发操作对代理的性能的影响;
下面以一个具体应用场景对本实施例的方法为了降低转发操作对性能的影响而采用的技术手段进行说明。
参见图2,为本申请一个实施例的分布式存储系统的逻辑示意图,图2中的分布式存储系统包括客户端和存储服务器,图2中示意了三个客户端分别为第一客户端,第二客户端和第三客户端,需要说明的是,这里的每个客户端都可以理解为是一个用户,图2中,第一客户端和第二客户端被一个虚线框框了起来,这表示第一客户端和第二客户端是访问同一个卷组的客户端,也就是说,第一客户端和第二客户端使用了同一个卷组(如,同一个卷组中的不同LUN)进行数据存取。第三客户端与第一客户端和第二客户端的不同之处是,第三客户端是使用单独的存储设备的客户端,例如,使用单独的LUN进行数据存取。由于一个卷组是由多个LUN组成的,所以本质上访问卷组也可以看成是访问LUN。
另外,图2中示意了第一客户端和第二客户端使用同一个卷组进行数据存取的情况,实际应用中可以根据需求配置卷组中LUN的数量,以及访问同一卷组的客户端数量。例如,在数据库业务中,一般将业务数据和日志分离存储,所以,针对数据库业务可以分配一个卷组,该卷组中包括两个LUN,一个LUN供进行业务数据的存取,另外一个LUN供进行日志的存取。
图2中的分布式存储系统是Ceph分布式存储系统,Ceph是一种为优秀的性能、可靠性和可扩展性而设计的统一的、分布式文件系统。图2中示意的三个存储服务器Server.0,Server.1和Server.2形成了一个集群,整体对外提供存储服务。
一般的,分布式存储系统提供两种类型的访问协议:一种是私有访问协议,例如Ceph的RBD(RADOS Block Devcie)协议,RADOS是Reliable,Autonomic DistributedObject Storage的简称。另一种是标准访问协议,例如小型计算机系统接口iSCSI(SmallComputer System Interface)、光纤通道协议FC(Fiber Channel)、通用网络文件系统CIFS(Common Internet File System)等。如果分布式存储基于私有访问协议实现,那么,就要求用户安装支持私有协议的私有客户端。不过,用户通常都不希望安装私有客户端,所以基于私有访问协议实现的分布式存储系统需要设置协议转换器,以在分布式存储系统的私有访问协议与用户的标准客户端之间进行协议转换。图2中示意的Tgt(即,Target)基础功能即是作为分布式存储系统的协议转换器。Tgt与用户之间通过iSCSI标准访问协议通信,接收用户发送的IO请求,然后进行协议转换,将iSCSI标准访问协议转化为RBD协议再与分布式存储系统进行通信。
需要说明的是,本实施例是以Ceph分布式存储系统和Tgt作为协议转换器为例进行的示意性说明,但是本申请的这种服务质量控制方法同样适用于其它协议实现的分布式存储系统和其它的协议转换器,对此不做限制。
本实施例中在分布式存储系统的多个存储服务器和客户端之间设置多个代理,由于在图2所示的分布式存储系统中也需要设置协议转换器Tgt,所以本实施例的方法将协议转换器Tgt作为代理。并且,本实施例中以对应卷组的负责代理为Tgt.0进行说明,根据负载均衡策略,由Tgt.0接收第一客户端的IO请求,由Tgt.1接收第二客户端的IO请求。
考虑到实际应用中读请求和写请求在数据量和处理方式上的差别,针对读请求和写请求本实施例分别提供了两种处理流程。
由于本实施例中卷组对应的负责代理为Tgt.0,所以负责代理Tgt.0收到的第一客户端的IO请求,不管客户端IO请求的类型是读请求还是写请求都不需要转发给其它非负责代理,即,其它Tgt。
以下先对客户端IO请求的类型为读请求时的处理流程进行说明:
参见图3,为本申请一个实施例的第一客户端的读请求的处理流程示意图,
步骤(1):负责代理Tgt.0接收第一客户端发送的访问对应卷组的一个读请求,然后执行步骤(2);
步骤(2):负责代理Tgt.0确定该读请求应被发送到的目标存储服务器,并将读请求以及统计信息一并发送到确定出的目标存储服务器上。然后执行步骤(3)。
这里的目标存储服务器例如图2中的Server.0。另外,实际应用中,根据分布式存储系统不同,确定读请求应被发送到的目标存储服务器的方式也不同,一种方式是当分布式存储系统设置有保存了文件的存储位置的元数据服务器时,负责代理根据读请求中的文件名信息,通过查询所述元数据服务器中的文件以及存储位置的对应关系,确定出所述文件名对应的存储位置,根据存储位置即可以确定出该读请求应被发送到的目标存储服务器。
步骤(3):目标存储服务器根据读请求以及统计信息按照前述公式(4)至公式(6)分别计算该读请求的预留时间标签,上限时间标签和权重时间标签,并对读请求进行处理。
具体的,目标存储服务器将读请求放入该目标存储服务器的客户端IO请求集合中,在将读请求从客户端IO请求集合中输出以处理时,首先比较该读请求的预留时间标签和当前时间(当前时间是存储服务器设置的一个时间),如果不大于当前时间,则在基于预留的阶段将读请求从客户端IO请求集合中输出。如果该读请求的预留时间标签大于当前时间,目标存储服务器的客户端IO请求集合中所有客户端IO请求的预留时间标签均大于当前时间,且目标存储服务器还有剩余处理能力,按照dmClock算法结束基于预留的阶段并进入基于权重的阶段,则该读请求将在基于权重的阶段从客户端IO请求集合中输出以供处理。
目标存储服务器在对该读请求进行输出后返回读响应信息以及读请求对应的输出阶段信息到负责代理Tgt.0。接着执行步骤(4)。
步骤(4):负责代理Tgt.0收到目标存储服务器发送的读响应信息后,将读响应信息返回给发送读请求的第一客户端,并根据读请求对应的输出阶段信息更新对应卷组的统计信息。
这里的更新对应卷组的统计信息,即根据新收到客户端IO请求的输出阶段信息,累加相应的输出阶段对应的客户端IO请求数目。例如,在收到该读请求对应的输出阶段信息之前,Tgt.0统计得到的统计信息为:基于预留的阶段的客户端IO请求数目为1个,基于权重的阶段的客户端IO请求数目为3个,而该读请求的输出阶段信息为基于预留的阶段信息,则负责代理为基于预留的阶段对应的客户端IO请求数目加1,即1+1,将基于预留的阶段的客户端IO请求数目更新为2。
接下来介绍非负责代理对第二客户端的读请求的处理流程。
读请求操作的特点是:读请求包含的数据量较小,但读响应信息包含大量用户数据。所以如果将读请求和读响应信息都交由负责代理Tgt.0来转发的话,同样会带来IO延迟和Tgt.0负载偏重的问题。针对这一问题,本实施例采用另外一种路径来降低读请求处理的性能耗时。具体的,参见图4,非负责代理对第二客户端的读请求的处理流程如下:
步骤(1):非负责代理Tgt.1接收到访问对应卷组的第二客户端的读请求,确定出读请求应被发送到的目标存储服务器(例如Server.i);然后执行步骤(2)。
这里确定读请求应被发送到的目标存储服务器的方式可以参见前述负责代理部分的说明,此处不再重复。
步骤(2):非负责代理Tgt.1将读请求以及目标存储服务器的信息,一并转发给负责代理Tgt.0。而后执行步骤(3)。
在本步骤中,非负责代理Tgt.1还要检查是否已经和目标存储服务器Server.i建立了连接,如果没有建立连接,那么建立连接。这里非负责代理Tgt.1和目标存储服务器建立连接的目的是为了后续步骤(4)中目标存储服务器能够将读响应信息发送给非负责代理Tgt.1。
步骤(3):负责代理Tgt.0接收到读请求后,在读请求中添加统计信息,将添加了统计信息后的读请求发送到目标存储服务器上。然后执行步骤(4)。
步骤(4):目标存储服务器接收到读请求后,计算读请求的预留时间标签,上限时间标签和权重时间标签,并对读请求进行处理。
目标存储服务器处理完读请求后,将读响应信息(即,客户端请求的数据),直接发送给非负责代理Tgt.1以避免延长IO路径;另外,将读请求对应的输出阶段信息发送给负责代理Tgt.0,以使得负责代理Tgt.0根据该读请求对应的输出阶段信息更新对应卷组的统计信息。
步骤(5):非负责代理Tgt.1将收到的读响应信息返回至发送读请求的第二客户端。
接下来介绍写请求的处理流程。
参见图5,负责代理对接收到的第一客户端的写请求的处理流程如下:
步骤(1):负责代理Tgt.0接收第一客户端发送的访问对应卷组的一个写请求;然后执行步骤(2);
步骤(2):负责代理Tgt.0确定该写请求应被发送到的目标存储服务器,并将写请求以及统计信息发送到确定出的目标存储服务器上(如Server.i)。
这里的确定写请求应被发送的目标存储服务器的方式可以参见前述对于确定读请求应被发送到的目标存储服务器部分的说明,此处不再重复。
步骤(3):目标存储服务器根据写请求以及统计信息按照前述公式(4)至于公式(6)分别计算该写请求的预留时间标签,上限时间标签和权重时间标签,并对写请求进行处理。
具体的,目标存储服务器将写请求放入该目标存储服务器的客户端IO请求集合中,在将写请求从客户端IO请求集合中输出以供后续处理时,首先比较该写请求的预留时间标签和当前时间(当前时间是存储服务器设置一个时间),如果不大于当前时间则可以在基于预留的阶段,将写请求从客户端IO请求集合中输出。如果该写请求的预留时间标签大于当前时间,目标存储服务器的客户端IO请求集合中所有客户端IO请求的预留时间标签均大于当前时间,且目标存储服务器还有剩余处理能力,则按照dmClock算法进入基于权重的阶段,则该写请求将在基于权重的阶段从客户端IO请求集合中输出。
目标存储服务器在对该写请求进行处理后返回写请求对应的输出阶段信息到负责代理Tgt.0,以及返回写响应信息(一般的,写响应信息中包括指示写入操作是否成功的信息)至负责代理Tgt.0。接着执行步骤(4)。
步骤(4):负责代理Tgt.0收到目标存储服务器返回的写请求对应的输出阶段信息后,根据写请求的输出阶段信息更新对应卷组的统计信息,以及将写响应返回给发送写请求的第一客户端。
这里根据写请求的输出阶段信息,更新对应卷组的统计信息的更具体的内容可以参见前述相关说明,在此不再赘述。
以上说明了负责代理处理第一客户端的写请求的流程,接下来对非负责代理处理第二客户端的写请求的流程进行说明。
因为写请求往往包含大量的用户数据,如果像前面的读请求的处理流程一样,非负责代理Tgt.1将第二客户端的写请求直接转发给负责代理Tgt.0,至少会引起两个问题:①写请求的IO路径被延长,影响IO响应效率;②增加负责代理Tgt.0的负担。对此,本实施例中非负责代理对第二客户端的写请求采用如下处理流程:
参见图6,首先执行步骤(1):非负责代理Tgt.1接收访问对应卷组的第二客户端的写请求,确定该写请求应被发送到的目标存储服务器;
这里的确定写请求应被发送到的目标存储服务器可以参见前述相关说明,此处不再赘述。
步骤(2):非负责代理Tgt.1将写请求发送到目标存储服务器(如,Server.i)上,同时向负责代理Tgt.0发送写请求对应的通知消息Rrquest1(req_id,T.1,Si)。该通知消息中包括三个参数,分别是:写请求的标识信息,非负责代理的标识信息以及目标存储服务器的地址信息。其中,T.1代表发送该通知消息的代理的标识,本实施例中即为Tgt.1。req_id代表写请求的标识,实际应用中可以是一个编号,该编号由非负责代理Tgt.1为写请求分配,用于唯一标识写请求;Si代表目标存储服务器(如Server.i)的地址信息,例如,目标存储服务器的IP地址信息。
步骤(3):负责代理Tgt.0接收到通知消息Rrquest1后,将实时统计信息发送给目标存储服务器。然后执行步骤(4)。
步骤(4):目标存储服务器对该写请求进行处理后返回写请求对应的输出阶段信息给负责代理Tgt.0以及返回写请求的响应信息给非负责代理Tgt.1。
具体的,目标存储服务器根据写请求以及统计信息按照前述公式(4)至于公式(6)分别计算该写请求的预留时间标签,上限时间标签和权重时间标签,将写请求放入该目标存储服务器的客户端IO请求集合中,并在对写请求处理后,将写请求对应的输出阶段信息返回至负责代理Tgt.0,使得负责代理Tgt.0可以更新对应卷组的统计信息。
这里,目标存储服务器对该写请求的处理过程可以参见前述相关说明,在此不再赘述。
步骤(5):非负责代理Tgt.1收到目标存储服务器返回的写响应信息后,将写响应信息返回至发送写请求的第二客户端。
需要说明的是,由于写请求和写请求对应的统计信息由不同的代理发送,导致了目标存储服务器不论是先接收到非负责代理Tgt.1发送的写请求还是先接收到负责代理Tgt.0发送的统计信息,都要等到两者均接收到后才能计算写请求的时间标签。而这种信息的相互等待会导致计算出的该写请求的时间标签较大,增加写请求的时延。
针对这一问题。本实施例提出在现有dmClock算法时间标签的计算基础上,对写请求进行时间偏移处理,从而将写请求的时间标签的基础上向前偏移一小段时间,以此弥补写请求和统计信息相互等待的时间。
时间偏移处理是指,当存储服务器按照dmClock算法计算出写请求的准时间标签之后,将准时间标签的值减去一个预设值(如1/20毫秒)将相减后的时间标签的值作为该写请求的时间标签,存储服务器将写请求保存到存储服务器的客户端IO请求集合中与该客户端IO请求集合中的其它客户端IO请求一起竞争存储资源。由于将该写请求的根据时间标签计算公式计算出的准时间标签的值减去了一个预设值,相当于将该写请求的预留时间标签值变小,而dmClock算法在输出客户端IO请求时又是按照时间标签的从小到大顺序处理的,时间标签越小,越早输出集合,这样就可以弥补写请求和统计信息相互等待的时间。
可以理解,只有存储服务器在接收非负责代理发送的写请求,以及接收该写请求对应的统计信息时,才存在写请求和统计信息相互等待的问题,所以这里的时间偏移处理只针对这种写请求,而对于非负责代理上收到的读请求或者负责代理上收到的读请求和写请求都不适用。
由上可知,本实施例的服务质量控制方法,首先,对写操作,解耦统计信息和写请求,分别通过两条路径将统计信息和写请求发送到存储服务器上,避免转发写请求引起的代理性能下降的问题;其次,对非负责代理发送的写请求,修改dmClock算法以弥补统计信息和写请求相互等待所消耗的时间;最后,对响应的处理,同时分离数据流和统计所需的输出阶段信息,将数据流(即响应信息)直接返回至发送请求的非负责代理或负责代理上,并统计所需的客户端IO请求对应的输出阶段信息发送到负责代理上,避免了多余的转发操作。
需要说明的是,上述是以Tgt.0作为一个卷组的负责代理进行的说明,实际应用中可以根据需要配置对应卷组中的负责代理,不限于这里的Tgt.0。
本实施例中提供了一种存储服务器,包括:
通信模块,适于接收代理发送的访问对应卷组的客户端IO请求和统计信息,
其中,代理设置在多个存储服务器和客户端之间,代理之间能够通信,且代理能够获得卷组与代理之间的对应关系,统计信息包括:访问对应卷组的客户端IO请求的数目以及客户端IO请求对应的输出阶段信息,
IO处理模块,适于为客户端IO请求计算预留时间标签、权重时间标签和上限时间标签,并对客户端IO请求进行处理;
通信模块,还适于将客户端IO请求对应的输出阶段信息发送至代理,使得代理更新对应卷组的所述统计信息。
在分布式存储系统中,存储服务器的基础功能是接收客户端IO请求(包括读请求和写请求)并对客户端IO请求进行处理,本实施例中,当存储服务器接收到代理发送的客户端IO请求以及统计信息之后,为每个客户端IO请求根据时间标签计算公式计算预留时间标签、上限时间标签和权重时间标签,然后将客户端IO请求保存到客户端IO请求集合中等待按顺序处理。
本实施例中,通信模块,接收对应卷组的负责代理发送的客户端IO请求和统计信息,将客户端IO请求对应的输出阶段信息发送至负责代理,以使负责代理更新对应卷组的统计信息;通信模块,接收对应卷组的非负责代理发送的客户端IO请求,并接收负责代理发送的客户端IO请求的统计信息。
具体的,当存储服务器的IO处理模块,在对读请求或写请求进行处理后发送读请求对应的输出阶段信息或写请求对应的输出阶段信息至负责代理,输出阶段信息包括基于预留的阶段信息和基于权重的阶段信息;
通信模块,还将对于非负责代理发送的写请求的写响应信息发送至非负责代理,以及,将对于负责代理转发的读请求的读响应发送至非负责代理;通信模块,将对于负责代理发送的写请求的写响应发送至负责代理,以及,将对于负责代理发送的读请求的读响应发送至负责代理。避免了延长请求的处理时间的问题,保证了代理的性能。
本实施例中,通信模块,适于接收非负责代理发送的写请求,并接收负责代理发送的统计信息,IO处理模块,适于根据写请求以及统计信息,利用时间标签计算公式计算出写请求的准预留时间标签,准上限时间标签和准权重时间标签,将计算出的写请求的准预留时间标签,准上限时间标签和准权重时间标签均减去预设值,得到写请求的预留时间标签,上限时间标签和权重时间标签。也就是说,目标存储服务器对于非负责代理发送的写请求以及负责代理发送写请求对应的统计信息的情况,对写请求进行时间偏移处理,弥补写请求或统计信息相互等待的时间。
与前述方法相对应,本公开还提供了一种服务质量控制装置,该装置可应用于代理上,代理设置在多个存储服务器和客户端之间,代理之间能够通信且代理能够获得卷组与代理之间的对应关系。
本申请提供的服务质量控制装置可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,可通过处理器10将非易失性存储器50中与服务质量控制装置60对应的机器可执行指令读取到易失性存储器40中运行。
从硬件层面而言,如图7所示,为本申请的代理的一种硬件结构图,除了图7所示的处理器10、内部总线20、网络接口30、易失性存储器40、以及非易失性存储器50之外,根据该代理的实际功能,还可以包括其他硬件,对此不再赘述。
在不同的实施例中,所述非易失性存储器50可以是:存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、DVD等),或者类似的存储介质,或者它们的组合。所述易失性存储器40可以是:RAM(Radom Access Memory,随机存取存储器)。
进一步,非易失性存储器50和易失性存储器40作为机器可读存储介质,其上可存储由处理器10执行的服务质量控制装置60对应的机器可执行指令。
请参考图8,从功能上划分,服务质量控制装置60包括:
IO接收模块601,适于接收访问对应卷组的客户端IO请求,
IO统计模块602,适于对访问对应卷组的客户端IO请求进行统计得到统计信息;其中,统计信息包括:访问对应卷组的客户端IO请求的数目以及客户端IO请求对应的输出阶段信息;
交互模块603,适于将客户端IO请求和统计信息发送至存储服务器,以使所述存储服务器为所述客户端IO请求计算预留时间标签、权重时间标签和上限时间标签,并对所述客户端IO请求进行处理;
交互模块603,还适于接收所述存储服务器发送的所述客户端IO请求对应的输出阶段信息,
IO统计模块602,还适于根据客户端IO请求对应的输出阶段信息更新对应卷组的所述统计信息。
本实施例中,交互模块603,具体适于接收存储服务器在基于预留的阶段处理客户端IO请求时发送的基于预留的阶段信息;所述基于预留的阶段信息中包括:客户端IO请求标识信息以及指示客户端IO请求的输出阶段的信息,或者,接收所述存储服务器在基于权重的阶段处理所述客户端IO请求时发送的基于权重的阶段信息;所述基于权重的阶段信息中包括:客户端IO请求标识信息以及指示客户端IO请求的输出阶段的信息,
IO统计模块602,具体适于根据客户端IO请求对应的基于预留的阶段信息,更新统计信息中基于预留的阶段信息对应的客户端IO请求数目,或者,根据所述客户端IO请求对应的基于权重的阶段信息,更新统计信息中基于权重的阶段信息对应的客户端IO请求数目。
本实施例中,代理分为负责代理和非负责代理,
负责代理包括:IO统计模块602,交互模块603以及第一IO接收模块,
第一IO接收模块,适于接收访问对应卷组的客户端IO请求,和/或,接收非负责代理转发的访问对应卷组的客户端IO请求或客户端IO请求对应的通知消息;
非负责代理包括:第二IO接收模块,适于接收访问对应卷组的客户端IO请求,将访问对应卷组的客户端IO请求转发至所述负责代理,或者将接收的访问对应卷组的客户端IO请求发送至存储服务器,并发送通知消息至所述负责代理,所述通知消息中包括:客户端IO请求的标识信息,非负责代理的标识信息以及存储服务器的地址信息。
本实施例中,第一IO接收模块,适于接收访问对应卷组的读请求,
交互模块603,适于将读请求和统计信息一并发送至存储服务器,接收所述存储服务器在对读请求处理后发送的读请求对应的输出阶段信息,
IO统计模块602,适于更新所述统计信息中相应输出阶段信息对应的客户端IO请求数目;
负责代理,还包括:第一响应信息收发模块,适于接收存储服务器发送的读响应信息,返回读响应信息至发送读请求的客户端;
第一IO接收模块,适于接收访问对应卷组的写请求,
交互模块603,适于将所述写请求和统计信息一并发送至存储服务器,接收所述存储服务器在对写请求处理后发送的写请求对应的输出阶段信息,
IO统计模块602,适于更新所述统计信息中相应输出阶段信息对应的客户端IO请求数目;
第一响应信息收发模块,适于接收所述存储服务器发送的写响应信息,返回写响应信息至发送所述写请求的客户端;
非负责代理的第二IO接收模块,适于接收访问对应卷组的写请求,将所述写请求发送至存储服务器,并发送通知消息至所述负责代理,以使所述负责代理根据接收到的通知消息,将统计信息发送至所述存储服务器;
第二IO接收模块,适于接收访问对应卷组的读请求,转发所述读请求至所述负责代理,以使所述负责代理将统计信息以及读请求一并发送至存储服务器;
非负责代理还包括:第二响应信息收发模块,适于接收所述存储服务器发送的读响应信息,返回读响应信息至发送所述读请求的客户端;接收所述存储服务器发送的写响应信息,返回写响应信息至发送所述写请求的客户端。
本实施例中,装置还包括:角色确定模块,适于在所述代理启动后,向服务进程发送查询请求,以获得该代理与卷组之间的对应关系以及所述代理的角色信息,角色信息用于指示代理作为负责代理还是非负责代理。
综上所述,本申请实施例的服务质量控制,实现了分布式存储系统的卷组QoS,解决了dmClock算法不支持卷组QoS的问题,提高了分布式存储的服务质量。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
Claims (15)
1.一种服务质量控制方法,其特征在于,在多个存储服务器和客户端之间设置多个代理,所述代理之间能够通信,且所述代理能够获得卷组与所述代理之间的对应关系,该方法应用于所述代理,包括:
接收访问对应卷组的客户端IO请求;
对访问对应卷组的客户端IO请求进行统计得到统计信息;其中,统计信息包括:访问对应卷组的客户端IO请求的数目以及客户端IO请求对应的输出阶段信息;
将客户端IO请求和统计信息发送至存储服务器,以使所述存储服务器为所述客户端IO请求计算预留时间标签、权重时间标签和上限时间标签,并对所述客户端IO请求进行处理,其中所述预留时间标签是指客户端IO请求按照卷组QoS中的预留控制要求正常应该被处理的时刻,所述上限时间标签是指客户端IO请求按照卷组QoS中的上限控制要求正常应该被处理的时刻,权重时间标签表示预定时间段内存储服务器收到的客户端IO请求的数量;
接收所述存储服务器发送的所述客户端IO请求对应的输出阶段信息,更新对应卷组的所述统计信息。
2.根据权利要求1所述的方法,其特征在于,接收所述存储服务器发送的所述客户端IO请求对应的输出阶段信息包括:
接收所述存储服务器在基于预留的阶段处理所述客户端IO请求时发送的基于预留的阶段信息;所述基于预留的阶段信息中包括:客户端IO请求标识信息以及指示客户端IO请求的输出阶段的信息,
或者,接收所述存储服务器在基于权重的阶段处理所述客户端IO请求时发送的基于权重的阶段信息;所述基于权重的阶段信息中包括:客户端IO请求标识信息以及指示客户端IO请求的输出阶段的信息,
更新对应卷组的所述统计信息包括:
根据所述客户端IO请求对应的基于预留的阶段信息,更新统计信息中基于预留的阶段信息对应的客户端IO请求数目,
或者,根据所述客户端IO请求对应的基于权重的阶段信息,更新统计信息中基于权重的阶段信息对应的客户端IO请求数目。
3.根据权利要求1或2所述的方法,其特征在于,所述代理分为负责代理和非负责代理,
所述负责代理,接收访问对应卷组的客户端IO请求,和/或接收非负责代理转发的访问对应卷组的客户端IO请求或客户端IO请求对应的通知消息;对访问对应卷组的客户端IO请求进行统计得到统计信息,并将客户端IO请求和统计信息发送至存储服务器;接收所述存储服务器发送的客户端IO请求对应的输出阶段信息,更新对应卷组的所述统计信息;
所述非负责代理,接收访问对应卷组的客户端IO请求,将访问对应卷组的客户端IO请求转发至所述负责代理,或者将接收的访问对应卷组的客户端IO请求发送至存储服务器,并发送通知消息至所述负责代理,所述通知消息中包括:客户端IO请求的标识信息,非负责代理的标识信息以及存储服务器的地址信息。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
在所述代理启动后,向服务进程发送查询请求,以获得所述代理与卷组之间的对应关系以及所述代理的角色信息,所述角色信息用于指示所述代理作为负责代理还是非负责代理。
5.根据权利要求3所述的方法,其特征在于,负责代理具体执行如下步骤:
接收访问对应卷组的读请求,
将所述读请求和统计信息一并发送至存储服务器;
接收所述存储服务器在对读请求处理后发送的读请求对应的输出阶段信息,并更新所述统计信息中相应输出阶段信息对应的客户端IO请求数目;
接收所述存储服务器发送的读响应信息,返回读响应信息至发送所述读请求的客户端;和/或
接收访问对应卷组的写请求,
将所述写请求和统计信息一并发送至存储服务器;
接收所述存储服务器在对写请求处理后发送的写请求对应的输出阶段信息,并更新所述统计信息中相应输出阶段信息对应的客户端IO请求数目;
接收所述存储服务器发送的写响应信息,返回写响应信息至发送所述写请求的客户端。
6.根据权利要求3所述的方法,其特征在于,非负责代理具体执行如下步骤:
接收访问对应卷组的写请求,
将所述写请求发送至存储服务器,并发送通知消息至所述负责代理,以使所述负责代理根据接收到的通知消息,将统计信息发送至所述存储服务器;
接收所述存储服务器发送的写响应信息,返回写响应信息至发送所述写请求的客户端;和/或
接收访问对应卷组的读请求,
转发所述读请求至所述负责代理,以使所述负责代理将统计信息以及读请求一并发送至存储服务器;
接收所述存储服务器发送的读响应信息,返回读响应信息至发送所述读请求的客户端。
7.一种存储服务器,其特征在于,包括:
通信模块,适于接收代理发送的访问对应卷组的客户端IO请求和统计信息,
其中,所述代理设置在多个存储服务器和客户端之间,所述代理之间能够通信,且所述代理能够获得卷组与所述代理之间的对应关系,所述统计信息包括:访问对应卷组的客户端IO请求的数目以及客户端IO请求对应的输出阶段信息,
IO处理模块,适于为所述客户端IO请求计算预留时间标签、权重时间标签和上限时间标签,并对所述客户端IO请求进行处理,其中所述预留时间标签是指客户端IO请求按照卷组QoS中的预留控制要求正常应该被处理的时刻,所述上限时间标签是指客户端IO请求按照卷组QoS中的上限控制要求正常应该被处理的时刻,权重时间标签表示预定时间段内存储服务器收到的客户端IO请求的数量;
所述通信模块,还适于将所述客户端IO请求对应的输出阶段信息发送至所述代理,使得所述代理更新对应卷组的所述统计信息。
8.根据权利要求7所述的存储服务器,其特征在于,
所述通信模块,适于接收对应卷组的负责代理发送的客户端IO请求和统计信息,将所述客户端IO请求对应的输出阶段信息发送至所述负责代理,以使负责代理更新对应卷组的所述统计信息;
所述通信模块,适于接收对应卷组的非负责代理发送的客户端IO请求,并接收所述负责代理发送的所述统计信息。
9.根据权利要求8所述的存储服务器,其特征在于,
所述通信模块,适于接收对应卷组的非负责代理发送的写请求,并接收所述负责代理发送的统计信息,
所述IO处理模块,适于根据所述写请求以及所述统计信息,利用时间标签计算公式计算出写请求的准预留时间标签,准上限时间标签和准权重时间标签,将计算出的写请求的准预留时间标签,准上限时间标签和准权重时间标签均减去预设值,得到写请求的预留时间标签,上限时间标签和权重时间标签。
10.根据权利要求8或9所述的存储服务器,其特征在于,
所述通信模块,适于接收负责代理发送的读请求和统计信息,或者,写请求和统计信息,
所述IO处理模块,适于根据所述读请求和统计信息,或者,所述写请求和统计信息,利用时间标签计算公式计算出各读请求或写请求的预留时间标签,上限时间标签和权重时间标签;
所述IO处理模块,还适于在对读请求或写请求进行处理后发送读请求对应的输出阶段信息或写请求对应的输出阶段信息至所述负责代理,所述输出阶段信息包括基于预留的阶段信息和基于权重的阶段信息;
所述通信模块,还适于将对于非负责代理发送的写请求的写响应信息发送至所述非负责代理,以及,将对于所述负责代理转发的读请求的读响应信息发送至非负责代理;
所述通信模块,适于将对于负责代理发送的写请求的写响应信息发送至所述负责代理,以及,将对于所述负责代理发送的读请求的读响应信息发送至负责代理。
11.一种服务质量控制装置,其特征在于,该装置应用于设置在多个存储服务器和客户端之间的多个代理,所述代理之间能够通信,且所述代理能够获得卷组与所述代理之间的对应关系,包括:
IO接收模块,适于接收访问对应卷组的客户端IO请求,
IO统计模块,适于对访问对应卷组的客户端IO请求进行统计得到统计信息;其中,统计信息包括:访问对应卷组的客户端IO请求的数目以及客户端IO请求对应的输出阶段信息;
交互模块,适于将客户端IO请求和统计信息发送至存储服务器,以使所述存储服务器为所述客户端IO请求计算预留时间标签、权重时间标签和上限时间标签,并对所述客户端IO请求进行处理,其中所述预留时间标签是指客户端IO请求按照卷组QoS中的预留控制要求正常应该被处理的时刻,所述上限时间标签是指客户端IO请求按照卷组QoS中的上限控制要求正常应该被处理的时刻,权重时间标签表示预定时间段内存储服务器收到的客户端IO请求的数量;
所述交互模块,还适于接收所述存储服务器发送的所述客户端IO请求对应的输出阶段信息,
所述IO统计模块,还适于根据客户端IO请求对应的输出阶段信息更新对应卷组的所述统计信息。
12.根据权利要求11所述的装置,其特征在于,
所述交互模块,具体适于接收所述存储服务器在基于预留的阶段处理所述客户端IO请求时发送的基于预留的阶段信息;所述基于预留的阶段信息中包括:客户端IO请求的标识信息以及指示客户端IO请求的输出阶段的信息,或者,接收所述存储服务器在基于权重的阶段处理所述客户端IO请求时发送的基于权重的阶段信息;所述基于权重的阶段信息中包括:客户端IO请求的标识信息以及指示客户端IO请求的输出阶段的信息,
所述IO统计模块,具体适于根据所述客户端IO请求对应的基于预留的阶段信息,更新统计信息中基于预留的阶段信息对应的客户端IO请求数目,或者,根据所述客户端IO请求对应的基于权重的阶段信息,更新统计信息中基于权重的阶段信息对应的客户端IO请求数目。
13.根据权利要求11或12所述的装置,其特征在于,所述代理分为负责代理和非负责代理,
所述负责代理包括:所述IO统计模块,所述交互模块以及第一IO接收模块,
所述第一IO接收模块,适于接收访问对应卷组的客户端IO请求,和/或,接收非负责代理转发的访问对应卷组的客户端IO请求或客户端IO请求对应的通知消息;
所述非负责代理包括:第二IO接收模块,适于接收访问对应卷组的客户端IO请求,将访问对应卷组的客户端IO请求转发至所述负责代理,或者将接收的访问对应卷组的客户端IO请求发送至存储服务器,并发送通知消息至所述负责代理,所述通知消息中包括:客户端IO请求的标识信息,非负责代理的标识信息以及存储服务器的地址信息。
14.根据权利要求13所述的装置,其特征在于,
所述第一IO接收模块,适于接收访问对应卷组的读请求,
所述交互模块,适于将所述读请求和统计信息一并发送至存储服务器,接收所述存储服务器在对读请求处理后发送的读请求对应的输出阶段信息,
所述IO统计模块,适于更新所述统计信息中相应输出阶段信息对应的客户端IO请求数目;
所述负责代理,还包括:第一响应信息收发模块,适于接收所述存储服务器发送的读响应信息,返回读响应信息至发送所述读请求的客户端;
所述第一IO接收模块,适于接收访问对应卷组的写请求,
所述交互模块,适于将所述写请求和统计信息一并发送至存储服务器,接收所述存储服务器在对写请求处理后发送的写请求对应的输出阶段信息,
所述IO统计模块,适于更新所述统计信息中相应输出阶段信息对应的客户端IO请求数目;
所述第一响应信息收发模块,适于接收所述存储服务器发送的写响应信息,返回写响应信息至发送所述写请求的客户端;
所述非负责代理的第二IO接收模块,适于接收访问对应卷组的写请求,将所述写请求发送至存储服务器,并发送通知消息至所述负责代理,以使所述负责代理根据接收到的通知消息,将统计信息发送至所述存储服务器;
所述第二IO接收模块,适于接收访问对应卷组的读请求,转发所述读请求至所述负责代理,以使所述负责代理将统计信息以及读请求一并发送至存储服务器;
所述非负责代理还包括:第二响应信息收发模块,适于接收所述存储服务器发送的读响应信息,返回读响应信息至发送所述读请求的客户端;接收所述存储服务器发送的写响应信息,返回写响应信息至发送所述写请求的客户端。
15.根据权利要求13所述的装置,其特征在于,还包括:角色确定模块,适于在所述代理启动后,向服务进程发送查询请求,以获得该代理与卷组之间的对应关系以及所述代理的角色信息,所述角色信息用于指示所述代理作为负责代理还是非负责代理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710340035.3A CN108881348B (zh) | 2017-05-15 | 2017-05-15 | 服务质量控制方法、装置和存储服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710340035.3A CN108881348B (zh) | 2017-05-15 | 2017-05-15 | 服务质量控制方法、装置和存储服务器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108881348A CN108881348A (zh) | 2018-11-23 |
CN108881348B true CN108881348B (zh) | 2021-04-06 |
Family
ID=64320584
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710340035.3A Active CN108881348B (zh) | 2017-05-15 | 2017-05-15 | 服务质量控制方法、装置和存储服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108881348B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111666147B (zh) * | 2019-03-07 | 2022-06-07 | 上海商汤智能科技有限公司 | 资源调度方法、设备、系统及中心服务器 |
CN109981768B (zh) * | 2019-03-21 | 2021-12-07 | 上海霄云信息科技有限公司 | 分布式网络存储系统中的io多路径规划方法及设备 |
CN109831347A (zh) * | 2019-04-11 | 2019-05-31 | 苏州浪潮智能科技有限公司 | 分布式集群卷QoS控制方法、系统、设备及计算机介质 |
CN110011855B (zh) * | 2019-04-12 | 2023-01-10 | 苏州浪潮智能科技有限公司 | 分布式集群卷QoS调节方法、装置、设备及存储介质 |
CN110795371B (zh) * | 2019-10-25 | 2021-06-29 | 浪潮电子信息产业股份有限公司 | 一种i/o请求处理方法、系统、设备及计算机存储介质 |
CN111176570B (zh) * | 2019-12-27 | 2021-07-16 | 浪潮电子信息产业股份有限公司 | 一种厚置备卷创建方法、装置、设备及介质 |
CN111092959B (zh) * | 2019-12-29 | 2022-08-12 | 浪潮电子信息产业股份有限公司 | 一种集群中服务器的请求处理方法、系统及相关装置 |
CN113132266A (zh) * | 2019-12-30 | 2021-07-16 | 深圳市商汤科技有限公司 | Io请求调度方法和装置 |
CN111338575B (zh) * | 2020-02-20 | 2021-06-29 | 苏州浪潮智能科技有限公司 | 一种存储服务质量控制方法、装置、设备及存储介质 |
CN112684988A (zh) * | 2021-01-11 | 2021-04-20 | 北京同有飞骥科技股份有限公司 | 基于分布式存储的QoS方法及系统 |
CN115334011A (zh) * | 2022-08-09 | 2022-11-11 | 成都精灵云科技有限公司 | 一种服务质量控制方法、装置、服务器及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101989986A (zh) * | 2010-10-28 | 2011-03-23 | 北京瑞汛世纪科技有限公司 | 一种查询服务节点的方法、服务器和系统 |
CN103873374A (zh) * | 2014-03-27 | 2014-06-18 | 杭州华三通信技术有限公司 | 虚拟化系统中的报文处理方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101976223B (zh) * | 2010-10-09 | 2012-12-12 | 成都市华为赛门铁克科技有限公司 | 自动精简配置方法和装置 |
US9423978B2 (en) * | 2013-05-08 | 2016-08-23 | Nexgen Storage, Inc. | Journal management |
-
2017
- 2017-05-15 CN CN201710340035.3A patent/CN108881348B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101989986A (zh) * | 2010-10-28 | 2011-03-23 | 北京瑞汛世纪科技有限公司 | 一种查询服务节点的方法、服务器和系统 |
CN103873374A (zh) * | 2014-03-27 | 2014-06-18 | 杭州华三通信技术有限公司 | 虚拟化系统中的报文处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108881348A (zh) | 2018-11-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108881348B (zh) | 服务质量控制方法、装置和存储服务器 | |
US10855602B2 (en) | Distributed policy-based provisioning and enforcement for quality of service | |
JP4569846B2 (ja) | I/oノード制御方式及び方法 | |
US6986139B1 (en) | Load balancing method and system based on estimated elongation rates | |
AU2015229200B2 (en) | Coordinated admission control for network-accessible block storage | |
WO2021126295A1 (en) | Request throttling in distributed storage systems | |
US8856334B2 (en) | Resource lending control apparatus and resource lending method | |
US9462077B2 (en) | System, method, and circuit for servicing a client data service request | |
JP6881575B2 (ja) | 資源割当システム、管理装置、方法およびプログラム | |
WO2019237594A1 (zh) | 会话保持方法、装置、计算机设备及存储介质 | |
JP2018514018A (ja) | リソース配置を最適化するための適時性リソース移行 | |
CN1921449B (zh) | 稳定的、最小歪斜资源流控制方法与系统 | |
CN104937584A (zh) | 基于共享资源的质量向经优先级排序的虚拟机和应用程序提供优化的服务质量 | |
CN108572991A (zh) | 数据库处理方法、装置和存储介质 | |
US20150081908A1 (en) | Computer-based, balanced provisioning and optimization of data transfer resources for products and services | |
JP2005196602A (ja) | 無共有型データベース管理システムにおけるシステム構成変更方法 | |
US10250673B1 (en) | Storage workload management using redirected messages | |
JP6272190B2 (ja) | 計算機システム、計算機、負荷分散方法及びそのプログラム | |
JP2009110347A (ja) | 資源管理システム、資源管理装置およびその方法 | |
JP2005031929A (ja) | サーバに記憶領域を割り当てる管理サーバ、記憶装置システム、及びプログラム | |
CN110362426B (zh) | 一种面向突发性负载的选择性副本实现方法及系统 | |
JP6793498B2 (ja) | データストア装置およびデータ管理方法 | |
CN108881506A (zh) | 一种基于多可用分区az的域名解析方法及装置 | |
US11256440B2 (en) | Method and distributed storage system for aggregating statistics | |
CN113760940B (zh) | 应用于分布式系统的配额管理方法、装置、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | 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 |