一种分配IO流的方法、系统及相关组件与流程

文档序号:17079518发布日期:2019-03-09 00:05阅读:173来源:国知局
一种分配IO流的方法、系统及相关组件与流程

本申请涉及数据存储技术领域,特别涉及一种分配io流的方法、系统、一种计算机可读存储介质及一种电子设备。



背景技术:

当前存储系统一般都为双节点结构,对io而言,这两个节点分为owner和non-owner节点,

owner节点主要用来处理io,而non-owner节点主要用来做数据镜像等数据备份操作。由于当前存储系统后端可以支持多种不同型号的磁盘,而各磁盘之间的性能差别可能会很大,例如hdd盘和ssd盘的性能差别不是一个数量级。这样就有可能一部分磁盘的延时大于另一部分磁盘,相应的一部分io的写延时要大于另一部分写io的延时,因此会导致io下刷的不平衡.

因此,如何根据缓存下刷性能调节对节点分配的io流数据量,在双节点存储系统中实现io流的下刷平衡是本领域技术人员目前需要解决的技术问题。

申请内容

本申请的目的是提供一种分配io流的方法、系统、一种计算机可读存储介质及一种电子设备,能够根据缓存下刷性能调节对节点分配的io流数据量,在双节点存储系统中实现io流的下刷平衡。

为解决上述技术问题,本申请提供一种分配io流的方法,应用于双节点存储系统,该方法包括:

获取下刷策略参数,根据所述下刷策略参数确定第一节点的对应的第一积分m和第二节点对应的第二积分n;其中,所述下刷策略参数为用于描述缓存下刷性能的参数;

根据所述第一积分m和所述第二积分n将io流分配至所述至第一节点对应的第一缓存池和第二节点对应的第二缓存池;其中,所述第一节点被分配的io流数量与所述第一积分m正相关,所述第二节点被分配的io流数量与所述第二积分n正相关。

可选的,根据所述下刷策略参数确定第一节点的对应的第一积分m和第二节点对应的第二积分n包括:

判断所述下刷策略参数是否符合预设条件;

若是,则将第一预设值作为所述第一积分m的数值,将第二预设值作为所述第二积分n的数值;

若否,则生成与所述下刷策略参数对应的下刷策略,根据所述下刷策略确定所述第一积分m和所述第二积分n。

可选的,判断所述下刷策略参数是否符合预设条件包括:

根据所述下刷策略参数得到所述第一节点的第一缓存数据量、所述第一节点的第一下刷数据间隔、所述第二节点的第二缓存数据量和所述第二节点的第二下刷数据间隔;

判断是否所述第一缓存数据量和所述第二缓存数据量均小于第三预设值且所述第一下刷数据间隔和所述第二下刷数据间隔均大于第四预设值;若是,则判定所述下刷策略参数符合所述预设条件;若否,则判定所述下刷策略参数不符合所述预设条件。

可选的,生成与所述下刷策略参数对应的下刷策略,根据所述下刷策略确定所述第一积分m和所述第二积分n包括:

根据所述下刷策略参数得到所述第一节点的第一修改页比例和所述第二节点的第二修改页比例;

判断是否所述第一修改页比例大于所述第二修改页比例且所述第一修改页比例大于第五预设值;

若是,则根据所述第一节点对应的镜像io流数量生成目标下刷策略;

根据所述目标下刷策略确定所述第一积分m和所述第二积分n。

可选的,根据所述目标下刷策略确定所述第一积分m和所述第二积分n包括:

确定当前时刻的原第一积分m′和原第二积分n′;

利用第一公式根据所述镜像io流数量t计算积分调整量q;其中,所述第一公式为q=a-t+32,a为积分最大值,a≥m,a≥n;

利用第二公式和第三公式分别计算所述第一积分m和所述第二积分n;其中,所述第二公式为m=m′+q,所述第三公式为n=n′-q。

可选的,还包括:

当所述第一节点接收到积分调整指令时,判断所述下刷策略参数是否符合预设条件;

若是,则获取当前时刻的原第一积分m′和原第二积分n′,确定积分最大调整值p,将所述原第一积分m′加p得到所述第一积分m并将所述原第二积分n′减p得到所述第二积分n;

若否,则生成与所述下刷策略参数对应的下刷策略,根据所述下刷策略确定所述第一积分m和所述第二积分n。

本申请还提供了一种分配io流的系统,应用于双节点存储系统,该系统包括:

积分确定模块,用于获取下刷策略参数,根据所述下刷策略参数确定第一节点的对应的第一积分m和第二节点对应的第二积分n;其中,所述下刷策略参数为用于描述缓存下刷性能的参数;

分配模块,用于根据所述第一积分m和所述第二积分n将io流分配至所述至第一节点对应的第一缓存池和第二节点对应的第二缓存池;其中,所述第一节点被分配的io流数量与所述第一积分m正相关,所述第二节点被分配的io流数量与所述第二积分n正相关。

可选的,所述积分确定模块包括:

判断单元,用于获取下刷策略参数并判断所述下刷策略参数是否符合预设条件;

第一积分设置单元,用于当所述下刷策略参数符合所述预设条件时,将第一预设值作为所述第一积分m的数值,将第二预设值作为所述第二积分n的数值;

第二积分设置单元,用于当所述下刷策略参数不符合所述预设条件时,生成与所述下刷策略参数对应的下刷策略,根据所述下刷策略确定所述第一积分m和所述第二积分n。

本申请还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序执行时实现上述分配io流的方法执行的步骤。

本申请还提供了一种电子设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器调用所述存储器中的计算机程序时实现上述分配io流的方法执行的步骤。

本申请提供了一种分配io流的方法,应用于双节点存储系统,该方法包括:获取下刷策略参数,根据所述下刷策略参数确定第一节点的对应的第一积分m和第二节点对应的第二积分n;其中,所述下刷策略参数为用于描述缓存下刷性能的参数;根据所述第一积分m和所述第二积分n将io流分配至所述至第一节点对应的第一缓存池和第二节点对应的第二缓存池;其中,所述第一节点被分配的io流数量与所述第一积分m正相关,所述第二节点被分配的io流数量与所述第二积分n正相关。

本申请通过获取用于描述第一节点和第二节点的缓存下刷性能的下刷策略参数确定第一积分m和第二积分n。由于第一积分m的值与第一节点被分配的io流数量正相关,第二积分n的值与第二节点被分配的io流数量正相关,也就是说本申请间接通过缓存下刷性能调节第一节点和第二节点将要接收到的io流的数量,因此本申请可以根据缓存下刷性能调节对节点分配的io流数据量,在双节点存储系统中实现io流的下刷平衡。本申请同时还提供了一种分配io流的系统、一种计算机可读存储介质和一种电子设备,具有上述有益效果,在此不再赘述。

附图说明

为了更清楚地说明本申请实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例所提供的一种分配io流的方法的流程图;

图2为本申请实施例所提供的一种积分确定方法的流程图;

图3为本申请实施例所提供的另一种积分确定方法的流程图;

图4为本申请实施例所提供的一种分配io流的系统的结构示意图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

下面请参见图1,图1为本申请实施例所提供的一种分配io流的方法的流程图。

具体步骤可以包括:

s101:获取下刷策略参数,根据所述下刷策略参数确定第一节点的对应的第一积分m和第二节点对应的第二积分n;

其中,所述下刷策略参数为用于描述缓存下刷性能的参数。本实施例的应用场景为双控存储系统,即采用双节点结构的存储系统。本实施例所提到的第一节点和第二节点为双控存储系统的节点,此处并不限定第一节点和第二节点中哪一节点为主节点(ownernode),哪一个节点为从节点(non-ownernode)。第一节点和第二节点分别有与其对应的虚拟磁盘vdisk,第一节点和第二节点将上层应用分配的io流下刷至对应的虚拟磁盘中。

本步骤的目的在于确定第一积分和第二积分,第一积分和第二积分是用于控制io流分配数量的指标,通过改变第一积分和第二积分可以实现对于第一节点和第二节点io流分配数量的调控。需要说明的是,本步骤中提到的下刷策略参数为描述当前时刻第一节点和第二节点将io流下刷至虚拟磁盘的写延时的参数,故下刷策略参数可以用于评价第一节点和第二节点下刷io流效率。

可以理解的是,根据所述下刷策略参数确定第一节点的对应的第一积分m和第二节点对应的第二积分n的意义在于:根据第一节点和第二节点的io流下刷效率调整确定第一积分m和第二积分n。需要说明的是,本实施例默认第一积分m的值越大上层应用分配给第一节点的io流的数量越多,同理可知,第二积分n的值越大上层应用分配给第二节点的io流的数量越多。本步骤中

作为一种优选的实施方式,本步骤中所描述的根据所述下刷策略参数确定第一节点的对应的第一积分m和第二节点对应的第二积分n,可以具体包括以下步骤:

步骤1:判断所述下刷策略参数是否符合预设条件;若是,则进入步骤2;若否,则进入步骤3。

步骤2:将第一预设值作为所述第一积分m的数值,将第二预设值作为所述第二积分n的数值;

步骤3:生成与所述下刷策略参数对应的下刷策略,根据所述下刷策略确定所述第一积分m和所述第二积分n。

这种优选的实施方式,首先判断获得的下刷策略参数是否符合预设条件,如果符合预设条件,则将第一积分m和第二积分n设置为默认值,即将第一预设值作为所述第一积分m的数值,将第二预设值作为所述第二积分n的数值;若果不符合预设条件则需要生成与下刷策略参数对应的下刷策略,通过下刷策略确定第一积分m和第二积分n。

作为对于上述优选的实施方式的补充,该实施例所提到的关于判断所述下刷策略参数是否符合预设条件的操作可以包括以下步骤:

a、根据所述下刷策略参数得到所述第一节点的第一缓存数据量、所述第一节点的第一下刷数据间隔、所述第二节点的第二缓存数据量和所述第二节点的第二下刷数据间隔;

b、判断是否所述第一缓存数据量和所述第二缓存数据量均小于第三预设值且所述第一下刷数据间隔和所述第二下刷数据间隔均大于第四预设值;若是,则判定所述下刷策略参数符合所述预设条件;若否,则判定所述下刷策略参数不符合所述预设条件。

此处默认下刷策略参数可以包括第一节点的第一缓存数据量、所述第一节点的第一下刷数据间隔、所述第二节点的第二缓存数据量和所述第二节点的第二下刷数据间隔,下刷策略参数还可以包括第一节点的第一修改页比例和第二节点的第二修改页比例。

当第一缓存数据量和第二缓存数据量过小时,可以将第一积分m和第二积分n设置为默认值,无需进行调整。同理可知,当第一下刷数据间隔和第二下刷数据间隔大于第四预设值时,说明需要下刷的io流很少,也可以将第一积分m和第二积分n设置为默认值,无需进行调整。当下刷策略参数不符合预设条件时,则可以通过生成与所述下刷策略参数对应的下刷策略调整第一积分m和第二积分n,以实现均衡下刷io流。

需要说明的是,此处根据下刷策略生成第一积分m和第二积分n后,上层应用给第一节点和第二节点分配的io流数量会随之改变,即io流下刷效率相对较高的节点会被分配到更多的io流,io流下刷效率相对较低的节点会被分配更少的io流,实现io流的均衡下刷。

s102:根据所述第一积分m和所述第二积分n将io流分配至所述至第一节点对应的第一缓存池和第二节点对应的第二缓存池;

其中,所述第一节点被分配的io流数量与所述第一积分m正相关,所述第二节点被分配的io流数量与所述第二积分n正相关。在根据所述第一积分m和所述第二积分n将io流分配至所述至第一节点对应的第一缓存池和第二节点对应的第二缓存池之后,可以达到使第一节点对应的io流下刷消耗时间与第二节点对应的io流下刷时间小于阈值,该阈值可以取0。

本实施例通过获取用于描述第一节点和第二节点的缓存下刷性能的下刷策略参数确定第一积分m和第二积分n。由于第一积分m的值与第一节点被分配的io流数量正相关,第二积分n的值与第二节点被分配的io流数量正相关,也就是说本实施例间接通过缓存下刷性能调节第一节点和第二节点将要接收到的io流的数量,因此本实施例可以根据缓存下刷性能调节对节点分配的io流数据量,在双节点存储系统中实现io流的下刷平衡。

下面请参见图2,图2为本申请实施例所提供的一种积分确定方法的流程图;本实施例是对图1对应的实施例中优选实施例的步骤3的进一步说明,可以将本实施例与图1对应的实施例进行结合得到更为优选的实施方式。

具体步骤可以包括:

s201:根据所述下刷策略参数得到所述第一节点的第一修改页比例和所述第二节点的第二修改页比例;

下刷策略参数可以包括第一节点的第一修改页比例和所述第二节点的第二修改页比例。节点的修改页比例越大说明节点下刷io流的效率越高。

s202:判断是否所述第一修改页比例大于所述第二修改页比例且所述第一修改页比例大于第五预设值;若是,则进入s203;若否,则结束流程

s203:根据所述第一节点对应的镜像io流数量生成目标下刷策略;

s204:根据所述目标下刷策略确定所述第一积分m和所述第二积分n。

需要说明的是,本实施例仅举出第一修改页比例大于所述第二修改页比例且所述第一修改页比例大于第五预设值的情况,还可以存在以下情况:判断是否所述第二修改页比例大于所述第一修改页比例且所述第二修改页比例大于第五预设值;若是,则根据所述第一节点对应的镜像io流数量生成另一目标下刷策略。由于本实施例并不限定第一节点和第二节点哪一节点为主节点或从节点,因此图2对应的实施例可以概括上述两种情况。

作为一种优选的实施方式,s204可以具体包括以下步骤:

步骤1、确定当前时刻的原第一积分m′和原第二积分n′;

步骤2、利用第一公式根据所述镜像io流数量t计算积分调整量q;其中,所述第一公式为q=a-t+32,a为积分最大值,a≥m,a≥n;

步骤3、利用第二公式和第三公式分别计算所述第一积分m和所述第二积分n;其中,所述第二公式为m=m′+q,所述第三公式为n=n′-q。

其中,在上述过程中主要是根据镜像io流数量t来确定积分调整量q,本实施例默认第一节点和第二节点之间互相备份对方的缓存池中的io流。

下面请参见图3,图3为本申请实施例所提供的另一种积分确定方法的流程图。

s301:当所述第一节点接收到积分调整指令时,判断所述下刷策略参数是否符合预设条件;若是,则进入s302;若否,则进入s303。

s302:获取当前时刻的原第一积分m′和原第二积分n′,确定积分最大调整值p,将所述原第一积分m′加p得到所述第一积分m并将所述原第二积分n′减p得到所述第二积分n;

s303:生成与所述下刷策略参数对应的下刷策略,根据所述下刷策略确定所述第一积分m和所述第二积分n。

其中,本实施例中提到的预设条件与图1对应的实施例中提到的预设条件相同,当接收到积分调整指令时首先判断是否满足预设条件,若满足则直接返回最大值,即:确定积分最大调整值p,将所述原第一积分m′加p得到所述第一积分m并将所述原第二积分n′减p得到所述第二积分n。当不满足预设条件时,则通过获取下刷策略参数,生成与下刷策略参数对应的下刷策略,根据所述下刷策略确定所述第一积分m和所述第二积分n。

上述所有实施例中提到的第一预设值、第二预设值、第三预设值、第四预设值、第五预设值、原第一积分m′、原第二积分n′、积分调整量q、积分最大值a均为预先设置好的值,工作人员可以根据实际应用情况设置具体的数值。

下面通过在实际应用中的实施例说明上述实施例描述的流程。

步骤1、创建两个池,一个owner_pool和non_owenr_pool分别存放ownernode和非ownernode的io,每个io对应一个credit(即,积分)。

步骤2、初始化设置好缓存fullness_threshold(缓存数据比例阈值,即第三预设值)、skew_age_limit(接收不到io的时间限制,即第四预设值)、tolerate_deviation(可以接受的io不平衡比例,即第五预设值)当缓存中数据小于fullness_threshold时,则考虑关闭throttle(即,下刷策略),当时间超过skew_age_limit时,考虑关闭throttle。

步骤3、如果owner/non_ownernode的修改页比例大于tolerate_deviation,则需要partnernode释放一些credit给自己。

步骤4、当node想返送一下credit给partner,如果没有开启throttle,则直接返回最大值。

步骤5、判定pio和hr/buffers二者中的最大值是否比credit_threshold(credit_threshold为一个预设值)小,若是则直接用最大的credit值。pio为缓存处理的io流单位大小,hr(hardenrights)表示该pio是否为掉电时落盘数据,buffers为存储pio的大小。此处hr/buffers作为一个整体与pio比较大小。

步骤6、如果这两种的credit值大于threshold,归还partner的credit值为max_valve-threshold(threshold=rio_credit_count-max_tracks_per_fsw)。也就是说,利用q=a-t+32根据所述镜像io流数量t计算积分调整量q;max_valve为积分最大值a,max_tracks_per_fsw为定值32,rio_credit_count为镜像io流数量t。

本实施例通过提供一种credit的方法来控制系统两个节点的业务量,根据后端磁盘的效率来实时分配,如此则可以最大限度提高系统效率。对于一个节点来说,上述过程可以概括为:首先判断是否缓存存储比例大于比例预设值且延时小于延时预设值,若否则停止下刷策略;若是则继续下一步。统计每一个磁盘的脏页,根据是否为本节点的owner统计得到modifiedowner和modifiednonowner,计算modifiedowner和modifiednonowner所占的百分比。判断modifiedowner是否大于olerate_deviation,若是,则向partnernode发送消息让其释放credit,若否则继续下一步。判断modifiednonowner是否大于tolerate_deviation,若是,则释放credit,释放完成通知partner。

请参见图4,图4为本申请实施例所提供的一种分配io流的系统的结构示意图;

该系统可以包括:

积分确定模块100,用于获取下刷策略参数,根据所述下刷策略参数确定第一节点的对应的第一积分m和第二节点对应的第二积分n;其中,所述下刷策略参数为用于描述缓存下刷性能的参数;

分配模块200,用于根据所述第一积分m和所述第二积分n将io流分配至所述至第一节点对应的第一缓存池和第二节点对应的第二缓存池;其中,所述第一节点被分配的io流数量与所述第一积分m正相关,所述第二节点被分配的io流数量与所述第二积分n正相关。

进一步的,所述积分确定模块100包括:

判断单元,用于获取下刷策略参数并判断所述下刷策略参数是否符合预设条件;

第一积分设置单元,用于当所述下刷策略参数符合所述预设条件时,将第一预设值作为所述第一积分m的数值,将第二预设值作为所述第二积分n的数值;

第二积分设置单元,用于当所述下刷策略参数不符合所述预设条件时,生成与所述下刷策略参数对应的下刷策略,根据所述下刷策略确定所述第一积分m和所述第二积分n。

进一步的,判断单元200包括:

第一参数分析子单元,用于根据所述下刷策略参数得到所述第一节点的第一缓存数据量、所述第一节点的第一下刷数据间隔、所述第二节点的第二缓存数据量和所述第二节点的第二下刷数据间隔;

条件判断子单元,用于判断是否所述第一缓存数据量和所述第二缓存数据量均小于第三预设值且所述第一下刷数据间隔和所述第二下刷数据间隔均大于第四预设值;若是,则判定所述下刷策略参数符合所述预设条件;若否,则判定所述下刷策略参数不符合所述预设条件。

进一步的,第二积分设置单元,包括:

第二参数分析子单元,用于根据所述下刷策略参数得到所述第一节点的第一修改页比例和所述第二节点的第二修改页比例;

策略生成子单元,用于判断是否所述第一修改页比例大于所述第二修改页比例且所述第一修改页比例大于第五预设值;若是,则根据所述第一节点对应的镜像io流数量生成目标下刷策略;

积分生成子单元,用于根据所述目标下刷策略确定所述第一积分m和所述第二积分n。

可选的,所述积分生成子单元用于确定当前时刻的原第一积分m′和原第二积分n′;还用于利用第一公式根据所述镜像io流数量t计算积分调整量q;其中,所述第一公式为q=a-t+32,a为积分最大值,a≥m,a≥n;还用于利用第二公式和第三公式分别计算所述第一积分m和所述第二积分n;其中,所述第二公式为m=m′+q,所述第三公式为n=n′-q。

可选的,还包括:

积分调整模块,用于当所述第一节点接收到积分调整指令时,判断所述下刷策略参数是否符合预设条件;若是,则获取当前时刻的原第一积分m′和原第二积分n′,确定积分最大调整值p,将所述原第一积分m′加p得到所述第一积分m并将所述原第二积分n′减p得到所述第二积分n;若否,则生成与所述下刷策略参数对应的下刷策略,根据所述下刷策略确定所述第一积分m和所述第二积分n。

由于系统部分的实施例与方法部分的实施例相互对应,因此系统部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。

本申请还提供了一种计算机可读存储介质,其上存有计算机程序,该计算机程序被执行时可以实现上述实施例所提供的步骤。该存储介质可以包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

本申请还提供了一种电子设备,可以包括存储器和处理器,所述存储器中存有计算机程序,所述处理器调用所述存储器中的计算机程序时,可以实现上述实施例所提供的步骤。当然所述电子设备还可以包括各种网络接口,电源等组件。

说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。

还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的状况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1