CN109831391B - 分布式存储系统中流控的方法、存储设备和系统 - Google Patents
分布式存储系统中流控的方法、存储设备和系统 Download PDFInfo
- Publication number
- CN109831391B CN109831391B CN201811644993.0A CN201811644993A CN109831391B CN 109831391 B CN109831391 B CN 109831391B CN 201811644993 A CN201811644993 A CN 201811644993A CN 109831391 B CN109831391 B CN 109831391B
- Authority
- CN
- China
- Prior art keywords
- token resource
- token
- level memory
- request
- resource
- 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
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/40—Support for services or applications
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种分布式存储系统中流控的方法、存储设备和系统。所述方法包括:为存储设备中的第一级存储器分配第一周期内的第一令牌token资源,为所述存储设备中的第二级存储器分配所述第一周期内的第二token资源;其中,所述第一级存储器为所述第二级存储器的高速缓冲存储器cache,所述第一token资源和所述第二token资源的总和为所述存储设备所在的分布式存储系统为所述存储设备分配的token资源;在所述第一周期内根据所述第一token资源控制所述第一级存储器处理的IO请求;在所述第一周期内根据所述第二token资源控制所述第二级存储器处理的IO请求。该方法能够避免因某一级存储器占用的token资源过多导致针对另一级存储器的IO请求不能及时处理所造成的业务不均的问题。
Description
技术领域
本申请涉及信息技术领域,尤其涉及一种分布式存储系统中流控的方法、存储设备和系统。
背景技术
分布式存储系统中包含多个存储节点,客户端根据主机发送的写请求向分布式存储系统中写入数据时,数据是以分条的形式存储到相应的存储节点的。
在分布式存储系统中,大文件持续传输型的应用需要充分的带宽性能,而小文件随机读写的应用则强调每秒进行读写操作的次数IOPS(Input/output Operations PerSecond,IOPS)能力。在实际应用中,为保证存储服务的性能,不仅需要关注IOPS,还需要关注带宽。因此,分布式存储系统需要平衡IOPS和带宽之间关系。
为满足服务水平协议(Service Level Agreement,SLA)的要求,通常需要进行流量控制。流量控制是在业务高峰期保障系统稳定运行、故障预防和恢复的有效手段。
目前,还没有针对分布式存储系统中存储设备的缓存和硬盘之间进行流量控制的有效手段。
发明内容
本申请实施例提供一种分布式存储系统中流控的方法、存储设备和系统,以在分布式存储系统中存储设备的缓存和硬盘之间进行有效的流量控制。
第一方面,本申请实施例提供了一种存储设备,包括:
处理器、第一级存储器和第二级存储器,其中,所述第一级存储器为所述第二级存储器的高速缓冲存储器cache;
所述处理器,分别与所述第一级存储器和所述第二级存储器连接并用于:
为所述第一级存储器分配第一周期内的第一令牌token资源,并在所述第一周期内根据所述第一token资源控制所述第一级存储器处理的IO请求;
为所述第二级存储器分配所述第一周期内的第二token资源,并在所述第一周期内根据所述第二token资源控制所述第二级存储器处理的IO请求;
其中,所述第一token资源和所述第二token资源的总和为所述存储设备所在的分布式存储系统为所述存储设备分配的token资源。
上述存储设备通过分别为第一级存储器和第二级存储器分配不同的token资源,并根据分配的token资源分别对第一级存储器和第二级存储器进行流量控制,能够保证第一级存储器和第二级存储器都有一定的token资源处理相应的IO请求,避免因某一级存储器占用的token资源过多导致针对另一级存储器的IO请求不能及时处理所造成的业务不均的问题。
可选的,所述存储设备为所述分布式存储系统中的一个存储节点。
在第一方面的一种可能的实现方式中,所述处理器还用于:
为所述第一级存储器分配第二周期内的第三token资源,并在所述第二周期内根据所述第三token资源控制所述第一级存储器处理的IO请求;所述第三token资源与所述第一token资源不同;
为所述第二级存储器分配所述第二周期内的第四token资源,并在所述第二周期内根据所述第四token资源控制所述第二级存储器处理的IO请求;所述第四token资源与所述第二token资源不同;
其中,所述第三token资源和所述第四token资源的总和为所述分布式存储系统为所述存储设备分配的token资源。
上述存储设备在第二周期内分别为第一级存储器和第二级存储器分配不同的token资源,且所分配的token资源与第一周期内分配的token资源不同,能够在不同的周期内为第一级存储器和第二级存储器分配不同的token资源,避免固定分配token资源所导致的资源分配不灵活,不能满足业务的实际需要的问题。
在第一方面的一种可能的实现方式中,当所述第一级存储器在所述第一周期内接收到的IO请求所需要的token资源大于所述第一token资源,且所述第二级存储器在所述第一周期内接收到的IO请求所需要的token资源小于所述第二token资源时,所述第三token资源大于所述第一token资源,所述第四token资源小于所述第二token资源。
在第一方面的一种可能的实现方式中,当所述第一级存储器在所述第一周期内接收到的IO请求所需要的token资源小于所述第一token资源,且所述第二级存储器在所述第一周期内接收到的IO请求所需要的token资源大于所述第二token资源时,所述第四token资源大于所述第二token资源,所述第三token资源小于所述第一token资源。
在第一方面的一种可能的实现方式中,所述第三token资源和所述第四token资源的差值是预设的固定值。
可选的,所述处理器还用于在所述第一周期内,接收第一IO请求;
判断所述第一级存储器的IO队列深度是否达到最大值;
当所述第一级存储器的IO队列深度达到最大值时,返回忙碌的响应消息。
在第一方面的一种可能的实现方式中,所述处理器还用于:
在所述第一周期内,接收第一IO请求;
当所述第一级存储器的IO队列深度未达到最大值,且所述第一IO请求所需的token资源与所述第一级存储器已经占用的token资源的和小于所述第一token资源时,从所述第一token资源中分配执行所述第一IO请求所需的token资源,执行所述第一IO请求。
可选的,所述执行所述第一IO请求,是所述处理器根据从所述第一token资源中分配的执行所述第一IO请求所需的token,执行所述第一IO请求。当所述第一IO请求是读数据请求是,从所述第一级存储器读取数据;当所述第一IO请求是写数据请求时,向所述第一级存储器写入数据。
可选的,所述处理器还用于,当所述第一IO请求需要的token资源与所述第一级存储器已经占用的token资源的和大于所述第一token时,将所述第一IO请求置入等待队列。其中,所述等待队列是IO请求被周期性调度的队列。当所述第一IO请求被置入所述等待队列后,所述第一IO请求会在所述等待队列的下一个执行周期,按照队列的顺序被调度执行。
在第一方面的一种可能的实现方式中,所述第一IO请求是读请求,所述处理器还用于:
在所述第一级存储器未存储所述第一IO请求所需的全部数据,所述第二级存储器的IO队列深度未达到最大值,且继续执行所述第一IO请求所需的token资源与所述第二级存储器已经占用的token资源的和小于所述第二token资源时,从所述第二token资源中分配继续执行所述第一IO请求所需的token资源,继续执行所述第一IO请求。
可选的,所述继续执行所述第一IO请求,是所述处理器根据从所述第二token资源中分配的执行所述第一IO请求所需的token,继续执行所述第一IO请求,即从第二级存储器中继续读取数据。
可选的,所述处理器还用于:
在所述第一周期内,接收第二IO请求;
当所述第二级存储器的IO队列深度未达到最大值时,从所述第二token资源中分配执行所述第二IO请求所需的token资源;
如果所述第二IO请求所需的token资源与所述第二级存储器已经占用的token资源的和小于所述第二token资源,针对所述第二级存储器执行所述第二IO请求。
可选的,所述处理器还用于,当所述第二IO请求需要的token资源与所述第二级存储器已经占用的token资源的和大于所述第二token时,将所述第二IO请求置入等待队列。
可选的,上述关于第一周期内对所述第一IO请求或所述第二IO请求的处理方式,也可以适用于所述第二周期中;相应的,所述第三token资源代替所述第一token资源,所述第四token资源代替所述第二token资源。
第二方面,本申请实施例提供了一种分布式存储系统中流控的方法,包括:
为存储设备中的第一级存储器分配第一周期内的第一令牌token资源,为所述存储设备中的第二级存储器分配所述第一周期内的第二token资源;其中,所述第一级存储器为所述第二级存储器的高速缓冲存储器cache,所述第一token资源和所述第二token资源的总和为所述存储设备所在的分布式存储系统为所述存储设备分配的token资源;
在所述第一周期内根据所述第一token资源控制所述第一级存储器处理的IO请求;
在所述第一周期内根据所述第二token资源控制所述第二级存储器处理的IO请求。
上述方法通过分别为第一级存储器和第二级存储器分配不同的token资源,并根据分配的token资源分别对第一级存储器和第二级存储器进行流量控制,能够保证第一级存储器和第二级存储器都有一定的token资源处理相应的IO请求,避免因某一级存储器占用的token资源过多导致针对另一级存储器的IO请求不能及时处理所造成的业务不均的问题。
可选的,所述存储设备为所述分布式存储系统中的一个存储节点。
在第二方面的一种可能的实现方式中,所述方法还包括:
为所述第一级存储器分配第二周期内的第三token资源,所述第三token资源与所述第一token资源不同,并为所述第二级存储器分配所述第二周期内的第四token资源,所述第四token资源与所述第二token资源不同,其中,所述第三token资源和所述第四token资源的总和为所述分布式存储系统为所述存储设备分配的token资源;
在所述第二周期内根据所述第三token资源控制所述第一级存储器处理的IO请求;
在所述第二周期内根据所述第四token资源控制所述第二级存储器处理的IO请求。
上述方法在第二周期内分别为第一级存储器和第二级存储器分配不同的token资源,且所分配的token资源与第一周期内分配的token资源不同,能够在不同的周期内为第一级存储器和第二级存储器分配不同的token资源,避免固定分配token资源所导致的资源分配不灵活,不能满足业务的实际需要的问题。
在第二方面的一种可能的实现方式中,当所述第一级存储器在所述第一周期内接收到的IO请求所需要的token资源大于所述第一token资源,且所述第二级存储器在所述第一周期内接收到的IO请求所需要的token资源小于所述第二token资源时,所述第三token资源大于所述第一token资源,所述第四token资源小于所述第二token资源。
在第二方面的一种可能的实现方式中,当所述第一级存储器在所述第一周期内接收到的IO请求所需要的token资源小于所述第一token资源,且所述第二级存储器在所述第一周期内接收到的IO请求所需要的token资源大于所述第二token资源时,所述第四token资源大于所述第二token资源,所述第三token资源小于所述第一token资源。
在第二方面的一种可能的实现方式中,所述第三token资源和所述第四token资源的差值是预设的固定值。
可选的,所述方法还包括:
在所述第一周期内,接收第一IO请求;
判断所述第一级存储器的IO队列深度是否达到最大值;
当所述第一级存储器的IO队列深度达到最大值时,返回忙碌的响应消息。
在第二方面的一种可能的实现方式中,所述方法还包括:
在所述第一周期内,接收第一IO请求;
当所述第一级存储器的IO队列深度未达到最大值,且所述第一IO请求所需的token资源与所述第一级存储器已经占用的token资源的和小于所述第一token资源时,从所述第一token资源中分配执行所述第一IO请求所需的token资源,执行所述第一IO请求。
可选的,所述执行所述第一IO请求,是根据从所述第一token资源中分配的执行所述第一IO请求所需的token,执行所述第一IO请求。当所述第一IO请求是读数据请求是,从所述第一级存储器读取数据;当所述第一IO请求是写数据请求时,向所述第一级存储器写入数据。
可选的,所述方法还包括:
当所述第一IO请求需要的token资源与所述第一级存储器已经占用的token资源的和大于所述第一token时,将所述第一IO请求置入等待队列。其中,所述等待队列是IO请求被周期性调度的队列。
在第二方面的一种可能的实现方式中,所述第一IO请求是读请求,所述方法还包括:
在所述第一级存储器未存储所述第一IO请求所需的全部数据,所述第二级存储器的IO队列深度未达到最大值,且继续执行所述第一IO请求所需的token资源与所述第二级存储器已经占用的token资源的和小于所述第二token资源时,从所述第二token资源中分配继续执行所述第一IO请求所需的token资源,继续执行所述第一IO请求。
可选的,所述继续执行所述第一IO请求,是根据从所述第二token资源中分配的执行所述第一IO请求所需的token,继续执行所述第一IO请求,即从第二级存储器中继续读取数据。
可选的,所述方法还包括:
在所述第一周期内,接收第二IO请求;
当所述第二级存储器的IO队列深度未达到最大值时,从所述第二token资源中分配执行所述第二IO请求所需的token资源;
如果所述第二IO请求所需的token资源与所述第二级存储器已经占用的token资源的和小于所述第二token资源,针对所述第二级存储器执行所述第二IO请求。
可选的,所述方法还包括:
当所述第二IO请求需要的token资源与所述第二级存储器已经占用的token资源的和大于所述第二token时,将所述第二IO请求置入等待队列。
可选的,上述关于第一周期内对所述第一IO请求或所述第二IO请求的处理方式,也可以适用于所述第二周期中;相应的,所述第三token资源代替所述第一token资源,所述第四token资源代替所述第二token资源。
第三方面,本申请实施例还提供了一种分布式存储系统,所述分布式存储系统包括至少两个上述第一方面所述的存储设备。
第四方面,本申请实施例还提供了一种存储设备,包括第一级存储器和第二级存储器,其中,所述第一级存储器为所述第二级存储器的高速缓冲存储器cache;所述存储设备还包括资源管理模块、缓存管理模块和磁盘读写管理模块;
资源管理模块,用于为所述第一级存储器分配第一周期内的第一令牌token资源,为所述第二级存储器分配所述第一周期内的第二token资源;其中,所述第一token资源和所述第二token资源的总和为所述存储设备所在的分布式存储系统为所述存储设备分配的token资源;
所述缓存管理模块,用于在所述第一周期内根据所述第一token资源控制所述第一级存储器处理的IO请求;
所述磁盘读写管理模块,用于在所述第一周期内根据所述第二token资源控制所述第二级存储器处理的IO请求。
在第四方面的一种可能的实现方式中,所述资源管理模块,用于为所述第一级存储器分配第二周期内的第三token资源,所述第三token资源与所述第一token资源不同;为所述第二级存储器分配所述第二周期内的第四token资源,所述第四token资源与所述第二token资源不同;其中,所述第三token资源和所述第四token资源的总和分布式存储系统为所述存储设备分配的token资源;
所述缓存管理模块,用于在所述第二周期内根据所述第三token资源控制所述第一级存储器处理的IO请求;
所述磁盘读写管理模块,用于在所述第二周期内根据所述第四token资源控制所述第二级存储器处理的IO请求。
在第四方面的一种可能的实现方式中,当所述第一级存储器在所述第一周期内接收到的IO请求所需要的token资源大于所述第一token资源,且所述第二级存储器在所述第一周期内接收到的IO请求所需要的token资源小于所述第二token资源时,所述第三token资源大于所述第一token资源,所述第四token资源小于所述第二token资源。
在第四方面的一种可能的实现方式中,当所述第一级存储器在所述第一周期内接收到的IO请求所需要的token资源小于所述第一token资源,且所述第二级存储器在所述第一周期内接收到的IO请求所需要的token资源大于所述第二token时资源,所述第四token资源大于所述第二token资源,所述第三token资源小于所述第一token资源。在第四方面的一种可能的实现方式中,所述第三token资源和所述第四token资源的差值是预设的固定值。
在第四方面的一种可能的实现方式中,所述缓存管理模块,还用于在所述第一周期内,接收第一IO请求;当所述第一级存储器的IO队列深度未达到最大值,且所述第一IO请求所需的token资源与所述第一级存储器已经占用的token资源的和小于所述第一token资源时,从所述第一token资源中分配执行所述第一IO请求所需的token资源,执行所述第一IO请求。
在第四方面的一种可能的实现方式中,所述第一IO请求是读请求,在所述第一级存储器未存储所述第一IO请求所需的全部数据,所述第二级存储器的IO队列深度未达到最大值,且继续执行所述第一IO请求所需的token资源与所述第二级存储器已经占用的token资源的和小于所述第二token资源时,所述磁盘读写管理模块从所述第二token资源中分配继续执行所述第一IO请求所需的token资源,并执行所述第一IO请求。
第五方面,本申请实施例提供了一种计算机程序产品,所述计算机程序产品包括在计算机可读存储介质中存储的计算机程序,并且所述计算程序通过控制器进行加载来实现上述第二方面或第二方面的任意可能的实现方式的方法。
第六方面,本申请实施例提供了一种非易失性计算机可读存储介质,用于存储计算机程序,所述计算机程序通过处理器进行加载来执行上述第二方面或第二方面的任意可能的实现方式的指令。
第七方面,本申请提实施例供了一种芯片,所述芯片包括可编程逻辑电路和/或程序指令,当所述芯片运行时用于实现上述第二方面或第二方面的任意可能的实现方式的方法。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的分布式存储系统的一种实现方式结构示意图;
图2为图1中存储设备200的一种实现方式的硬件结构示意图;
图3为图1中存储设备200的一种实现方式的软硬结构示意图;
图4为本申请实施例提供了一种分布式存储系统中的存储设备流控方法的流程示意图;
图5为本申请实施例提供的另一种存储设备300的结构示意图;
图6为本申请实施例提供的一种分布式存储系统中流控方法的流程示意图。
具体实施方式
下面结合附图,对本发明的实施例进行描述。
另外,本发明实施例中的术语“第一”、“第二”、“第三”、“第四”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”、“第三”、“第四”的特征可以明示或者隐含地包括一个或者更多个该特征。
首选,对本申请中涉及的部分术语及相关技术进行解释说明,以方便理解:
1)流量控制
存储设备在提供数据的读写服务时,对数据读写请求响应的及时性关系到存储服务的有效性。受存储设备设备性能的限制,存储设备无法在特定时间段内处理超过其处理能力的读写请求。为了让有限的设备资源能够提供稳定可靠的服务,需要进行流量控制。
实施流量控制,能够在数据读写请求的量超过预设阈值时,拒绝进一步的数据读写请求,以保证数据读写处理的及时性和有效性。
2)IOPS
IOPS是指每秒进行输入输出(input output,IO)操作的次数。例如,如果每秒钟能够进行1000次IO,IO大小为2K,那么IOPS为1000;如果每秒钟能够进行10次IO,IO大小为100MB,那么IOPS为10。IOPS用于衡量存储的快速响应能力。
IOPS控制主要是通过阈值对IO操作次数进行控制,超过阈值就拒绝访问,从而防止系统压力过载。
3)带宽
带宽是指存储每秒能处理的数据的总量,单位是MB/S。例如,写入10000个1KB的文件需要10s,带宽就是1M/S;而写入一个10MB的文件只用了0.1s,带宽是100MB/S。带宽是用于衡量存储设备的吞吐量。通常带宽是通过令牌token资源来表示数据块大小,比如读写512B需要1个token。如果当前系统token量不足,就需要控制IO,防止因资源不足导致时延的增大。
带宽控制主要是限制单位时间内存储设备的读写带宽。从数据本身来看,带宽值在数值上等于所有的IO的大小的总和。如果每个IO的大小都相同的话,带宽=IOPS×IO的大小。
IOPS和带宽是一个矛盾的统一体。小文件随机读写的应用要求存储设备具有足够的IO能力,所以要求较高的IOPS;大文件持续传输型的应用需要的是存储设备具有充分的带宽性能。例如,写10000个大小为1K的文件到硬盘上,耗费的时间远比写一个10M大小的文件要多,因为写入10000个文件时,根据文件分布情况和大小情况,要做好几万次IO才能完成;而写一个10M大小的文件,如果这个文件在硬盘上是连续存放的,那么需要几十个IO就可以完成。
4)IO队列深度
IO队列深度的作用是同时允许预设阈值范围内的IO并发执行;一方面可以提高性能;另一方面可以限制IO并发数,防止超过系统承载能力。其中,所述阈值可以是128或256等。通过控制IO队列深度,可以控制IOPS。
IO队列深度通常是预先配置的。例如存储设备中缓存的IO队列深度可以被配置为128,硬盘的IO队列深度可以被配置为256。
参考图1,图1为分布式存储系统的一种实现方式结构示意图。如图1所示,分布式存储系统包括客户端100(100a-100n)和存储设备200(200a-200n),客户端100和存储设备200之间通过网络300连接和通信。其中,n为正整数,存储设备200可以为计算机设备或服务器。
客户端100根据主机发送的写请求向分布式存储系统中的存储设备200写入数据时,数据是以分条的形式存储到相应的存储设备200中。例如,基于纠删码(ErasureCoding,EC)算法,分条中数据条带数量为X,校验条带的数量为Y,分条的长度为X+Y,其中X和Y均为正整数。客户端100将待存储的数据划分为X个数据条带的数据,根据EC算法生成Y个校验条带的数据,并将X+Y长度的分条的条带的数据写入相应的存储设备200。
图2为图1中存储设备200一种实现方式的硬件结构示意图。如图2所示,存储设备200包括中央处理单元(Central Processing Unit,CPU)201、内存202、接口203、硬盘1、硬盘2和硬盘3。其中,内存202中存储有计算机指令,CPU201通过执行内存202中的计算机指令执行相应的操作。内存202还包括缓存2021,缓存2021用于缓存存储设备200接收到的需要写入硬盘(硬盘1-3)的数据。接口203可以为硬件接口,如网络接口卡(Network InterfaceCard,NIC)或主机总线适配器(Host Bus Adaptor,HBA)等,也可以为程序接口模块等。硬盘包含固态硬盘(Solid State Disk,SSD)、机械硬盘或者混合硬盘。机械硬盘如硬式磁盘驱动器(Hard Disk Drive,HDD),硬盘接口可以为串行高级技术连接(Serial AdvancedTechnology Attachment,SATA)接口,串行连接小型计算机系统接口(Serial AttachedSmall Computer System Interface,SAS)接口,光纤通道(Fiber Channel,FC)接口,快速外设互联(Peripheral Component Interconnect-Express,PCIe)接口,或者快速非易失性存储设备(Non-Volatile Memory Express,NVMe)接口等。图2中以3个硬盘为例进行说明,在具体实现时,存储设备200还可以包括多个硬盘。CPU201可以由现场可编程逻辑门阵列(Field Programmable Gate Array,FPGA)或其他硬件代替,或者,FPGA或其他硬件与CPU201共同执行上述相应的操作。
存储设备200通过网络300接收到客户端100发送的待存储的数据后,待存储的数据会通过接口203临时存储在缓存2021中,在满足将所述待存储的数据写入硬盘(硬盘1-3)后,所述待存储的数据会从缓存2021迁移到硬盘(硬盘1-3)具体的存储空间中。由于硬盘是持久化的存储介质,在存储设备200掉电时,硬盘(硬盘1-3)中存储的数据也不会丢失。
在向缓存2021中写入所述待存储的数据时需要消耗一定的IOPS和带宽,将所述待存储的数据从缓存2021迁移到硬盘(硬盘1-3)时也需要消耗一定的IOPS和带宽。同样的,当客户端100从存储设备200读取数据时,从硬盘读取数据时会消耗一定的IOPS和带宽,将从硬盘读取的数据写入缓存2021时也会消耗一定的IOPS和带宽。多个读写操作会消耗大量的IOPS和带宽,当存储设备200总的IOPS和带宽不能够满足所有的读写操作请求时,就需要对存储设备200进行流量控制。由于存储设备200总的IOPS和带宽有限,当对存储设备200进行流量控制时,如何有效地在缓存读写和硬盘读写之间分配token资源,以在有效利用IOPS和带宽的前提下保证数据读写操作的有效处理,是一个需要解决的问题。
图3为图1中存储设备200一种实现方式的软硬结构示意图。如图3所示,存储设备200还包括软件层,所述软件层是存储设备200中运行的软件,这些软件包括但不限于操作系统、设备的驱动模块和资源管理相关的模块等。为描述本申请方案的需要,图3中只显示了资源管理模块204、缓存管理模块205和磁盘读写管理模块206,且图3中存储设备200可以是图1中存储设备200a-存储设备200c中的任一个存储设备。
所述资源管理模块204,用于对管理存储设备200的token资源进行管理和控制。例如,所述资源管理模块204可以将存储设备200的token资源分配给缓存2021和硬盘用于IO请求的控制。
所述缓存管理模块205,用于对缓存2021的token资源进行管理和控制,包括但不限于根据根据资源管理模块204分配的token资源对缓存2021的数据读写操作进行流量控制,以及对缓存2021需要处理的不同类型的数据读写操作分配不同的token资源。
所述磁盘读写管理模块206,用于对硬盘(例如硬盘1-3中的一个或多个)的token资源进行管理和控制,包括但根据资源管理模块204分配的token资源对硬盘的数据读写操作进行流量控制,以及对硬盘需要处理的不同类型的数据读写操作分配不同的token资源。可以理解,上述资源管理模块204、缓存管理模块205和磁盘读写管理模块206是所述存储设备200中运行的软件模块,这些软件模块运行在所述存储设备200的操作系统中,并通过CPU201相关的软件代码实现其相应的功能。并且,图3中资源管理模块204、缓存管理模块205和磁盘读写管理模块206之间的虚线连接表示它们相互之间有关联关系,并不代表它们之间存在实际的连线。同样的,缓存管理模块205与缓存2021之间,磁盘读写管理模块206与硬盘1-3之间的虚线表示它们之间存在关联关系,并不代表它们之间存在实际的联系。在具体实现时,缓存管理模块205和磁盘读写管理模块206通过CPU201执行相应的代码或计算机可读执行程序实现,CPU201通过系统总线与内存之间的连接,是缓存管理模块205与缓存2021之间通信的媒介;CPU201通过系统总线与硬盘之间的连接,是磁盘读写管理模块206与硬盘1-3之间通信的媒介。
在对存储设备200进行流量控制时,上述缓存管理模块205和磁盘读写管理模块206还用于根据IOPS进行流量控制。例如,缓存管理模块205还用于根据缓存2021的IO队列深度控制缓存2021的IOPS;磁盘读写管理模块206还用于根据硬盘的IO队列深度控制硬盘的IOPS。
为有效控制缓存2021在数据读写操作时消耗的token资源,以及硬盘在数据读写操作时消耗的token资源,避免在实施流量控制时因token资源的分配不均所造成的资源闲置以及数据读写操作因流控未能及时处理的问题,下面结合图3所示的存储设备200为例,对本申请实施例提供了一种分布式存储系统中的存储设备流控的方法进行描述。如图4所示,所述方法包括:
步骤S100:资源管理模块204为缓存2021和硬盘分别分配token资源;
具体的,资源管理模块204可以为缓存2021分配第一token资源,为硬盘分配第二token资源。
存储设备所在的分布式存储系统初始化时,会根据系统中每个存储设备及其资源配置等信息,为每个存储设备分配token资源。即存储设备200被分配的token资源,是该存储设备200所在的分布式存储系统基于集群管理所分配的token资源。在存储设备200初始运行时,运行在存储设备200操作系统中的资源管理模块204基于该存储设备200被分配的token资源,分别为缓存2021和硬盘分别分配token资源。可选的,资源管理模块204可以为缓存2021和硬盘分别分配一半的token资源。即缓存2021和硬盘各占存储设备200总token资源的50%;缓存2021被分配的第一token资源为存储设备200总token资源的50%,硬盘被分配的第二token资源为存储设备200总token资源的50%。
在具体实现时,由于缓存2021的token资源是通过缓存管理模块205管理和控制的,缓存管理模块205可以根据所述第一token资源,对缓存2021进行流量控制。同样的,磁盘读写管理模块206可以根据所述第二token资源,对硬盘(硬盘1-3中的一个或多个)进行流量控制。
步骤S101:存储设备200接收客户端100通过网络300发送的IO请求;
其中,所述IO请求可以是从存储设备200读取数据的请求,也可以是向存储设备200写入数据的请求。
步骤S102:缓存管理模块205判断缓存2021的IO队列深度是否达到最大值,当未达到最大值时,将所述IO队列深度加1,并执行步骤S103;当达到最大值时,返回处于忙碌状态的响应消息;
例如,缓存2021的IO队列深度最大值是128,缓存管理模块205可以判断缓存2021当前的队列深度是否达到最大值128。如果当前的IO队列深度未达到最大值128,则缓存管理模块205将当前的IO队列深度加1,并继续执行步骤S103;如果当前的队列深度达到最大值128,则不再执行所述IO请求,并返回处于忙碌状态的响应消息。返回处于忙碌状态的响应消息,可以触发存储设备200向客户端100返回处于忙碌状态的响应消息。
步骤S103:缓存管理模块205判断所述IO请求所需的token资源与所述缓存2021已经占用的token资源的和是否小于所述第一token资源;当小于所述第一token资源时,继续执行步骤S104;当大于所述第一token资源时,则将所述IO读写请求置入等待队列,等待周期性调度;
当存储设备200接收到所述IO请求时,缓存2021可能已经处理了其它的IO请求并占用了token资源还未被释放。在为所述IO请求分配其所需的token资源前,需要先判断所述IO请求所需的token资源与所述缓存2021已经占用的token资源的和是否小于所述第一token资源,即判断所述IO请求所需的token资源是否大于所述缓存2021基于所述第一token资源所剩余的空闲token资源。
如果所述IO请求所需的token资源与所述缓存2021已经占用的token资源的和小于所述第一token资源,则缓存管理模块205将当前可用的token资源减去所述IO读写请求需要占用的token资源,并继续执行步骤S104。
如果所述IO请求所需的token资源与所述缓存2021已经占用的token资源的和大于所述第一token资源,则缓存管理模块205将所述IO读写请求置入pending队列等用于IO请求等待被执行的等待队列,以等待周期性的调度。以pending队列的周期为200毫秒为例,在等待200毫秒后,缓存管理模块205依次调用pending队列中的IO请求,如果所述IO请求被调用,则重新执行步骤S103;如果所述IO请求因所述pending队列等待的IO读写请求过多而在本周期内未被调用,则需要等待下一个周期。当所述IO请求在下一个周期被所述缓存管理模块205调用时,重新执行步骤S103。
由于缓存管理模块205是按照缓存2021被分配的token资源进行流量控制,避免因缓存2021在业务运行中因占用的token资源过多导致硬盘(硬盘1-3)的IO请求不能及时处理所造成的业务不均的问题
步骤S104:缓存管理模块205执行所述IO请求对应的操作,将IO队列深度减1,并释放所述IO请求所占用的token资源;
步骤S105:磁盘读写管理模块206继续处理所述IO请求。
磁盘读写管理模块206可以按照缓存管理模块205相类似的方式,继续处理所述IO读写请求。
具体的,当所述IO请求是读数据请求时,如果从所述缓存2021未读取到需要读取的数据或未读取到所有需要读取的数据,则需要从硬盘中读取相应的数据。这时硬盘读写管理模块206需按照上述步骤S102-步骤S104中缓存管理模块205对所述IO请求实现流量控制的方式,对从硬盘读取数据的过程进行流量控制。当然,如果从所述缓存2021读取到需要读取的数据,则不再需要从硬盘中读取数据,不再执行步骤S105。
如果所述IO请求是写数据请求,在将缓存2021中的数据写入硬盘时,该数据写入过程属于存储设备200的后台IO操作,不会占用资源管理模块204分配给硬盘的token资源,也相应的不再执行步骤S105。需要说明的是,当缓存2021中已写入数据的量达到一定阈值时,缓存管理模块205就会触发将缓存2021中的数据写入硬盘中。
步骤S106:资源管理模块204实时监控缓存2021和硬盘对token资源的使用和消耗情况,并根据缓存2021和硬盘对token资源的实际需求,动态调整分配给缓存2021和硬盘的token资源。
可选的,当缓存2021对token资源的需求增大导致缓存2021需要处理的IO请求所需要的token资源大于所述第一token资源时,而硬盘需要处理的IO请求所需要的token资源还未达到所述第二token资源时,资源管理模块204可以增加分配给缓存2021的token资源,并相应减少分配给硬盘的token资源。也就是说,动态调整分配给缓存2021和硬盘的token资源,增加第一token资源并相应减少第二token资源。例如,调整后的分配给缓存2021的token资源为第三token资源,调整后的配给硬盘的token资源为第四token资源。所述第三token资源与所述第四token资源的总和是分布式存储系统为所述存储设备200分配的token资源。
在具体实现时,资源管理模块204可以周期性地按照预设的比例,动态地调整分配给缓存2021和硬盘分配的token资源。
以调整周期为10分钟,调整幅度为5%,分布式存储系统为存储设备200分配的token资源的量为100为例,资源管理模块204每10分钟调整一次token资源的分配比例,每次调整的幅度为5%。例如,资源管理模块204首次分配给缓存2021和硬盘的token资源是各占所述存储设备总的token资源的50%。在第一个10分钟内,即在第一周期内,资源管理模块204分配给缓存2021的第一token资源的量为50,资源管理模块204分配给硬盘(硬盘1-3)的第二token资源的量为50。如果资源管理模块204判断缓存2021在第一周期内需要处理的IO请求所需要的token资源的量大于50;而硬盘在第一周期内需要处理的IO请求所需要的token资源的量小于50,则资源管理模块204调整在第二个周期内为缓存2021增加5%的token资源,即缓存2021在第二周期内被分配的第三token资源的量为55;在第二个周期内为硬盘减少5%的token资源,即在第二周期内硬盘被分配的第四token资源的量为45。
这样,在第二周期内,缓存管理模块205按照第三token资源(55)对缓存2021进行流量控制;磁盘读写管理模块206按照第四token资源(45)对硬盘(硬盘1-3)进行流量控制。
当然,如果缓存2021在第一周期内需要处理的IO请求所需要的token资源的量小于50;而硬盘(硬盘1-3)在第一周期内需要处理的IO请求所需要的token资源的量大于50,则资源管理模块204调整第二周期内的token资源分配,在第二个周期内为缓存2021减少5%的token资源,即缓存2021在第二周期内被分配的第三token资源的量为45,并在第二个周期内为硬盘(硬盘1-3)增加5%的token资源,即硬盘(硬盘1-3)在第二周期内被分配的第四token资源的量为55。在第二周期内,缓存管理模块205按照第三token资源(45)对缓存2021进行流量控制;磁盘读写管理模块206按照第四token资源(55)55对硬盘(硬盘1-3)进行流量控制。
可以理解,本申请实施例中,资源管理模块204调整token资源的周期和每次调整的数量不受上述实现方式的限制。资源管理模块204可以不定期地根据实际的IO请求调整分配给缓存2021和硬盘的token资源。资源管理模块204可以在每次分配给缓存2021和硬盘的token资源时,不是按照预设的固定的值调整token资源,即每次分配给缓存2021和硬盘的token资源的幅度可以不同。
上述关于token资源的动态调整方式,能够在不同的周期内为缓存2021和硬盘(硬盘1-3)分配不同的token资源,避免固定分配token资源所导致的资源分配不灵活,不能满足业务的实际需要的问题。
参考图5,图5为本申请实施例提供的另一种存储设备300的结构示意图。如图5所示,存储设备300包括处理器301、第一级存储器302和第二级存储器303,其中,所述第一级存储器302为所述第二级存储器303的高速缓冲存储器cache;
所述处理器301,分别与所述第一级存储器302和所述第二级存储器303连接并用于:
为所述第一级存储器302分配第一周期内的第一令牌token资源,并在所述第一周期内根据所述第一token资源控制所述第一级存储器302处理的IO请求;
为所述第二级存储器303分配所述第一周期内的第二token资源,并在所述第一周期内根据所述第二token资源控制所述第二级存储器303处理的IO请求;
其中,所述第一token资源和所述第二token资源的总和为所述存储设备所在的分布式存储系统为所述存储设备分配的token资源。
上述存储设备300通过分别为第一级存储器302和第二级存储器303分配不同的token资源,并根据分配的token资源分别对第一级存储器302和第二级存储器303进行流量控制,能够保证第一级存储器302和第二级存储器303都有一定的token资源处理相应的IO请求,避免因某一级存储器占用的token资源过多导致针对另一级存储器的IO请求不能及时处理所造成的业务不均的问题。
可选的,所述处理器301还用于:
为所述第一级存储器302分配第二周期内的第三token资源,并在所述第二周期内根据所述第三token资源控制所述第一级存储器302处理的IO请求;所述第三token资源与所述第一token资源不同;
为所述第二级存储器303分配所述第二周期内的第四token资源,并在所述第二周期内根据所述第四token资源控制所述第二级存储器303处理的IO请求;所述第四token资源与所述第二token资源不同;
其中,所述第三token资源和所述第四token资源的总和为所述分布式存储系统为所述存储设备分配的token资源。
上述存储设备300在第二周期内分别为第一级存储器302和第二级存储器303分配不同的token资源,且所分配的token资源与第一周期内分配的token资源不同,能够在不同的周期内为第一级存储器302和第二级存储器303分配不同的token资源,避免固定分配token资源所导致的资源分配不灵活,不能满足业务的实际需要的问题。
可选的,当所述第一级存储器302在所述第一周期内接收到的IO请求所需要的token资源大于所述第一token资源,且所述第二级存储器303在所述第一周期内接收到的IO请求所需要的token资源小于所述第二token资源时,所述第三token资源大于所述第一token资源,所述第四token资源小于所述第二token资源。
可选的,当所述第一级存储器302在所述第一周期内接收到的IO请求所需要的token资源小于所述第一token资源,且所述第二级存储器303在所述第一周期内接收到的IO请求所需要的token资源大于所述第二token资源时,所述第四token资源大于所述第二token资源,所述第三token资源小于所述第一token资源。
可选的,所述第三token资源和所述第四token资源的差值是预设的固定值。
可选的,所述处理器301还用于:
在所述第一周期内,接收第一IO请求;
当所述第一级存储器302的IO队列深度未达到最大值,且所述第一IO请求所需的token资源与所述第一级存储器302已经占用的token资源的和小于所述第一token资源时,从所述第一token资源中分配执行所述第一IO请求所需的token资源,执行所述第一IO请求。
可选的,所述执行所述第一IO请求,是所述处理器301根据从所述第一token资源中分配的执行所述第一IO请求所需的token,执行所述第一IO请求。当所述第一IO请求是读数据请求是,从所述第一级存储器302读取数据;当所述第一IO请求是写数据请求时,向所述第一级存储器302写入数据。
可选的,所述第一IO请求是读请求,所述处理器301还用于:
在所述第一级存储器302未存储所述第一IO请求所需的全部数据,所述第二级存储器303的IO队列深度未达到最大值,且继续执行所述第一IO请求所需的token资源与所述第二级存储器303已经占用的token资源的和小于所述第二token资源时,从所述第二token资源中分配继续执行所述第一IO请求所需的token资源,继续执行所述第一IO请求。
可选的,所述继续执行所述第一IO请求,是所述处理器301根据从所述第二token资源中分配的执行所述第一IO请求所需的token,继续执行所述第一IO请求,即从第二级存储器303中继续读取数据。
上述图5所示的存储设备300,可以参考上述图2-图4中存储设备200的实现方式来实现。例如,处理器301可以参考CPU201的实现方式来实现,第一级存储器302可以参考缓存2021的实现方式来实现,第二级存储器303可以参考硬盘的实现方式来实现,不再赘述。
参考图6,图6为本申请实施例提供的一种分布式存储系统中流控方法的流程示意图。
如图6所示,所述方法包括:
步骤S200:为存储设备中的第一级存储器分配第一周期内的第一令牌token资源,为所述存储设备中的第二级存储器分配所述第一周期内的第二token资源;其中,所述第一级存储器为所述第二级存储器的高速缓冲存储器cache,所述第一token资源和所述第二token资源的总和为所述存储设备所在的分布式存储系统为所述存储设备分配的token资源;
步骤S201:在所述第一周期内根据所述第一token资源控制所述第一级存储器处理的IO请求;
步骤S202:在所述第一周期内根据所述第二token资源控制所述第二级存储器处理的IO请求。
上述方法通过分别为第一级存储器和第二级存储器分配不同的token资源,并根据分配的token资源分别对第一级存储器和第二级存储器进行流量控制,能够保证第一级存储器和第二级存储器都有一定的token资源处理相应的IO请求,避免因某一级存储器占用的token资源过多导致针对另一级存储器的IO请求不能及时处理所造成的业务不均的问题。
可选的,所述方法还包括:
为所述第一级存储器分配第二周期内的第三token资源,所述第三token资源与所述第一token资源不同,并为所述第二级存储器分配所述第二周期内的第四token资源,所述第四token资源与所述第二token资源不同,其中,所述第三token资源和所述第四token资源的总和为所述分布式存储系统为所述存储设备分配的token资源;
在所述第二周期内根据所述第三token资源控制所述第一级存储器处理的IO请求;
在所述第二周期内根据所述第四token资源控制所述第二级存储器处理的IO请求。
上述方法在第二周期内分别为第一级存储器和第二级存储器分配不同的token资源,且所分配的token资源与第一周期内分配的token资源不同,能够在不同的周期内为第一级存储器和第二级存储器分配不同的token资源,避免固定分配token资源所导致的资源分配不灵活,不能满足业务的实际需要的问题。
可选的,当所述第一级存储器在所述第一周期内接收到的IO请求所需要的token资源大于所述第一token资源,且所述第二级存储器在所述第一周期内接收到的IO请求所需要的token资源小于所述第二token资源时,所述第三token资源大于所述第一token资源,所述第四token资源小于所述第二token资源。
可选的,当所述第一级存储器在所述第一周期内接收到的IO请求所需要的token资源小于所述第一token资源,且所述第二级存储器在所述第一周期内接收到的IO请求所需要的token资源大于所述第二token资源时,所述第四token资源大于所述第二token资源,所述第三token资源小于所述第一token资源。
可选的,所述第三token资源和所述第四token资源的差值是预设的固定值。
可选的,所述方法还包括:
在所述第一周期内,接收第一IO请求;
当所述第一级存储器的IO队列深度未达到最大值,且所述第一IO请求所需的token资源与所述第一级存储器已经占用的token资源的和小于所述第一token资源时,从所述第一token资源中分配执行所述第一IO请求所需的token资源,执行所述第一IO请求。
可选的,所述执行所述第一IO请求,是根据从所述第一token资源中分配的执行所述第一IO请求所需的token,执行所述第一IO请求。当所述第一IO请求是读数据请求是,从所述第一级存储器读取数据;当所述第一IO请求是写数据请求时,向所述第一级存储器写入数据。可选的,所述第一IO请求是读请求,所述方法还包括:
在所述第一级存储器未存储所述第一IO请求所需的全部数据,所述第二级存储器的IO队列深度未达到最大值,且继续执行所述第一IO请求所需的token资源与所述第二级存储器已经占用的token资源的和小于所述第二token资源时,从所述第二token资源中分配继续执行所述第一IO请求所需的token资源,继续执行所述第一IO请求。
可选的,所述继续执行所述第一IO请求,是根据从所述第二token资源中分配的执行所述第一IO请求所需的token,继续执行所述第一IO请求,即从第二级存储器中继续读取数据。上述图6所示的方法,具体还可以参考上述图2-图4中存储设备200中相关的实现方式来实现。例如,所述方法可以由所述存储设备中的处理器来执行,所述处理器可以参考上述CPU201执行;第一级存储器可以参考缓存2021的实现方式来实现,第二级存储器可以参考硬盘的实现方式来实现,不再赘述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、设备和方法,可以通过其它的方式实现。例如,以上所描述的设备所显示或描述的相互之间的连接,可以是耦合、直接耦合或通信连接。这些连接、耦合或直接耦合或通信连接,可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (15)
1.一种存储设备,其特征在于,包括:
处理器、第一级存储器和第二级存储器,其中,所述第一级存储器为所述第二级存储器的高速缓冲存储器cache;
所述处理器,分别与所述第一级存储器和所述第二级存储器连接并用于:
为所述第一级存储器分配第一周期内的第一令牌token资源,并在所述第一周期内根据所述第一token资源控制所述第一级存储器处理的IO请求;
为所述第二级存储器分配所述第一周期内的第二token资源,并在所述第一周期内根据所述第二token资源控制所述第二级存储器处理的IO请求;
其中,所述第一token资源和所述第二token资源的总和为所述存储设备所在的分布式存储系统为所述存储设备分配的token资源。
2.根据权利要求1所述的存储设备,其特征在于,所述处理器还用于:
为所述第一级存储器分配第二周期内的第三token资源,并在所述第二周期内根据所述第三token资源控制所述第一级存储器处理的IO请求;所述第三token资源与所述第一token资源不同;
为所述第二级存储器分配所述第二周期内的第四token资源,并在所述第二周期内根据所述第四token资源控制所述第二级存储器处理的IO请求;所述第四token资源与所述第二token资源不同;
其中,所述第三token资源和所述第四token资源的总和为所述分布式存储系统为所述存储设备分配的token资源。
3.根据权利要求2所述的存储设备,其特征在于:
当所述第一级存储器在所述第一周期内接收到的IO请求所需要的token资源大于所述第一token资源,且所述第二级存储器在所述第一周期内接收到的IO请求所需要的token资源小于所述第二token资源时,所述第三token资源大于所述第一token资源,所述第四token资源小于所述第二token资源。
4.根据权利要求2所述的存储设备,其特征在于:当所述第一级存储器在所述第一周期内接收到的IO请求所需要的token资源小于所述第一token资源,且所述第二级存储器在所述第一周期内接收到的IO请求所需要的token资源大于所述第二token资源时,所述第四token资源大于所述第二token资源,所述第三token资源小于所述第一token资源。
5.根据权利要求2-4任意一项所述的存储设备,其特征在于:所述第三token资源和所述第四token资源的差值是预设的固定值。
6.根据权利要求1-4任意一项所述的存储设备,其特征在于,所述处理器还用于:
在所述第一周期内,接收第一IO请求;
当所述第一级存储器的IO队列深度未达到最大值,且所述第一IO请求所需的token资源与所述第一级存储器已经占用的token资源的和小于所述第一token资源时,从所述第一token资源中分配执行所述第一IO请求所需的token资源,执行所述第一IO请求。
7.根据权利要求6所述的存储设备,其特征在于,所述第一IO请求是读请求,所述处理器还用于:
在所述第一级存储器未存储所述第一IO请求所需的全部数据,所述第二级存储器的IO队列深度未达到最大值,且继续执行所述第一IO请求所需的token资源与所述第二级存储器已经占用的token资源的和小于所述第二token资源时,从所述第二token资源中分配继续执行所述第一IO请求所需的token资源,继续执行所述第一IO请求。
8.一种分布式存储系统中流控的方法,其特征在于,所述方法包括:
为存储设备中的第一级存储器分配第一周期内的第一令牌token资源,为所述存储设备中的第二级存储器分配所述第一周期内的第二token资源;其中,所述第一级存储器为所述第二级存储器的高速缓冲存储器cache,所述第一token资源和所述第二token资源的总和为所述存储设备所在的分布式存储系统为所述存储设备分配的token资源;
在所述第一周期内根据所述第一token资源控制所述第一级存储器处理的IO请求;
在所述第一周期内根据所述第二token资源控制所述第二级存储器处理的IO请求。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
为所述第一级存储器分配第二周期内的第三token资源,所述第三token资源与所述第一token资源不同,并为所述第二级存储器分配所述第二周期内的第四token资源,所述第四token资源与所述第二token资源不同,其中,所述第三token资源和所述第四token资源的总和为所述分布式存储系统为所述存储设备分配的token资源;
在所述第二周期内根据所述第三token资源控制所述第一级存储器处理的IO请求;
在所述第二周期内根据所述第四token资源控制所述第二级存储器处理的IO请求。
10.根据权利要求9所述的方法,其特征在于:
当所述第一级存储器在所述第一周期内接收到的IO请求所需要的token资源大于所述第一token资源,且所述第二级存储器在所述第一周期内接收到的IO请求所需要的token资源小于所述第二token资源时,所述第三token资源大于所述第一token资源,所述第四token资源小于所述第二token资源。
11.根据权利要求9所述的方法,其特征在于:
当所述第一级存储器在所述第一周期内接收到的IO请求所需要的token资源小于所述第一token资源,且所述第二级存储器在所述第一周期内接收到的IO请求所需要的token资源大于所述第二token资源时,所述第四token资源大于所述第二token资源,所述第三token资源小于所述第一token资源。
12.根据权利要求9-11任意一项所述的方法,其特征在于:所述第三token资源和所述第四token资源的差值是预设的固定值。
13.根据权利要求8-11任意一项所述的方法,其特征在于,所述方法还包括:
在所述第一周期内,接收第一IO请求;
当所述第一级存储器的IO队列深度未达到最大值,且所述第一IO请求所需的token资源与所述第一级存储器已经占用的token资源的和小于所述第一token资源时,从所述第一token资源中分配执行所述第一IO请求所需的token资源,执行所述第一IO请求。
14.根据权利要求13所述的方法,其特征在于,所述第一IO请求是读请求,所述方法还包括:
在所述第一级存储器未存储所述第一IO请求所需的全部数据,所述第二级存储器的IO队列深度未达到最大值,且继续执行所述第一IO请求所需的token资源与所述第二级存储器已经占用的token资源的和小于所述第二token资源时,从所述第二token资源中分配继续执行所述第一IO请求所需的token资源,继续执行所述第一IO请求。
15.一种分布式存储系统,其特征在于,所述分布式存储系统包括至少两个上述权利要求1-7中任意一项所述的存储设备。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811644993.0A CN109831391B (zh) | 2018-12-29 | 2018-12-29 | 分布式存储系统中流控的方法、存储设备和系统 |
PCT/CN2019/103267 WO2020134142A1 (zh) | 2018-12-29 | 2019-08-29 | 分布式存储系统中流控的方法、存储设备和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811644993.0A CN109831391B (zh) | 2018-12-29 | 2018-12-29 | 分布式存储系统中流控的方法、存储设备和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109831391A CN109831391A (zh) | 2019-05-31 |
CN109831391B true CN109831391B (zh) | 2022-05-13 |
Family
ID=66861502
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811644993.0A Active CN109831391B (zh) | 2018-12-29 | 2018-12-29 | 分布式存储系统中流控的方法、存储设备和系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN109831391B (zh) |
WO (1) | WO2020134142A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109831391B (zh) * | 2018-12-29 | 2022-05-13 | 华为云计算技术有限公司 | 分布式存储系统中流控的方法、存储设备和系统 |
CN114697372B (zh) * | 2022-05-31 | 2022-09-06 | 深圳市泛联信息科技有限公司 | 一种分布式系统中数据传输处理与存储方法、系统及介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1652084A (zh) * | 2004-02-03 | 2005-08-10 | 株式会社日立制作所 | 计算机系统、管理装置、存储装置以及计算机装置 |
CN101556575A (zh) * | 2009-05-21 | 2009-10-14 | 成都市华为赛门铁克科技有限公司 | 一种自动分配独立冗余磁盘阵列带宽的方法及装置 |
WO2017000094A1 (zh) * | 2015-06-27 | 2017-01-05 | 华为技术有限公司 | 一种数据存储方法、装置和系统 |
CN108667744A (zh) * | 2018-02-26 | 2018-10-16 | 华为技术有限公司 | 流量控制方法及装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006079495A (ja) * | 2004-09-13 | 2006-03-23 | Hitachi Ltd | ストレージシステム及び論理区画の設定方法 |
CN106105152B (zh) * | 2014-05-22 | 2018-07-13 | 华为技术有限公司 | 一种节点互连装置和服务器系统 |
CN109831391B (zh) * | 2018-12-29 | 2022-05-13 | 华为云计算技术有限公司 | 分布式存储系统中流控的方法、存储设备和系统 |
-
2018
- 2018-12-29 CN CN201811644993.0A patent/CN109831391B/zh active Active
-
2019
- 2019-08-29 WO PCT/CN2019/103267 patent/WO2020134142A1/zh active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1652084A (zh) * | 2004-02-03 | 2005-08-10 | 株式会社日立制作所 | 计算机系统、管理装置、存储装置以及计算机装置 |
CN101556575A (zh) * | 2009-05-21 | 2009-10-14 | 成都市华为赛门铁克科技有限公司 | 一种自动分配独立冗余磁盘阵列带宽的方法及装置 |
WO2017000094A1 (zh) * | 2015-06-27 | 2017-01-05 | 华为技术有限公司 | 一种数据存储方法、装置和系统 |
CN107113323A (zh) * | 2015-06-27 | 2017-08-29 | 华为技术有限公司 | 一种数据存储方法、装置和系统 |
CN108667744A (zh) * | 2018-02-26 | 2018-10-16 | 华为技术有限公司 | 流量控制方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109831391A (zh) | 2019-05-31 |
WO2020134142A1 (zh) | 2020-07-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11194626B2 (en) | Dynamic resource allocation based on data transferring to a tiered storage | |
US10185592B2 (en) | Network storage device using dynamic weights based on resource utilization | |
US10387202B2 (en) | Quality of service implementation in a networked storage system with hierarchical schedulers | |
US10534542B2 (en) | Dynamic core allocation for consistent performance in a non-preemptive scheduling environment | |
US8284627B2 (en) | Reducing energy consumption and optimizing workload and performance in multi-tier storage systems using extent-level dynamic tiering | |
US10191771B2 (en) | System and method for resource management | |
US10394606B2 (en) | Dynamic weight accumulation for fair allocation of resources in a scheduler hierarchy | |
US9396027B2 (en) | Resource allocation for a plurality of resources for a dual activity system | |
US9448920B2 (en) | Granting and revoking supplemental memory allocation requests | |
US11520715B2 (en) | Dynamic allocation of storage resources based on connection type | |
US20190065404A1 (en) | Adaptive caching in a storage device | |
CN109831391B (zh) | 分布式存储系统中流控的方法、存储设备和系统 | |
US8914582B1 (en) | Systems and methods for pinning content in cache | |
US10423357B2 (en) | Devices and methods for managing memory buffers | |
JP2010026828A (ja) | 仮想計算機の制御方法 | |
EP4057150A1 (en) | Systems, methods, and devices for data storage with specified data transfer rate | |
CN112241239B (zh) | 存储任务管控方法、存储任务管控装置和存储设备 | |
US20220365728A1 (en) | Method and system for maximizing performance of a storage system | |
CN117170807A (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 | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20220211 Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province Applicant after: Huawei Cloud Computing Technology Co.,Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Applicant before: HUAWEI TECHNOLOGIES Co.,Ltd. |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |