一种面向分布式存储系统的自动化拷机测试方法和装置与流程

文档序号:25032854发布日期:2021-05-11 17:03阅读:109来源:国知局
一种面向分布式存储系统的自动化拷机测试方法和装置与流程

【技术领域】

本发明涉及分布式存储和集群系统技术领域,特别是涉及一种面向分布式存储系统的自动化拷机测试方法和装置。



背景技术:

分布式存储系统是一个由若干存储服务器和交换机等硬件设备组成的集群系统,其性能除了受系统本身的软件结构及算法影响外,还受存储服务器硬件及交换机等硬件设备性能的影响。

在实际生产环境中,很难保证所有服务器、交换机等硬件设备均不存在质量问题,尤其是当集群规模大到一定规模时,存在有质量问题的硬件设备甚至是一种普遍现象,最为典型的问题硬件设备,如:读写性能不达标的存储硬盘、网络性能不达标的网络模块等。这种存在质量问题的硬件,不仅其性能无法得到保证,而且其使用寿命往往也远低于预期。如果基于这些硬件去搭建分布式存储系统,会增加系统正式上线后的运行风险,轻则拉低系统的整体性能,重则导致集群停止工作,甚至数据丢失。因此分布式存储系统在正式部署上线前,对集群所使用的关键硬件进行性能和稳定性测试(拷机测试)是非常有必要的。该测试不仅可以及早排查异常硬件,降低系统上线后的运行风险,还能及时在质保期内排查出问题硬件并进行更换,以降低经济损失。

对分布式存储系统所包含的硬件而言,存储硬盘和网络设备是较为容易出现质量问题的设备,同时这两个设备也是影响分布式存储系统工作的关键硬件,因此在对分布式存储系统进行拷机测试时,主要通过对存储硬盘及网络设备进行性能和稳定性测试来实现。目前,业界多采用各自设计的测试用例通过人工方式来进行拷机测试。

具体来说,由相应运维人员按照预先设计好的测试用例,对服务器的网口及磁盘进行性能和稳定性测试,测试结果由运维人员汇总分析。采用该方式,人工消耗大,时间开销大,增大实施成本,同时由于测试方案的设计没有统一标准、数据汇总及分析依赖人工,因此测试结果容易受个人主观意识的影响,从而导致对存在问题设备产生漏判或误判。除此之外,业界主要从存储服务器的角度设计拷机测试用例,未对系统中的交换机等网络设备设计针对性用例,因此如果测试发现服务器网络异常,就需要人为设计其它测试用例来定位网络设备故障,这会进一步延长拷机测试时间。总之,虽然拷机测试对分布式存储系统而言,具有重要意义与价值,但目前业界并没有相应完整的针对分布式存储系统的自动化方法。

鉴于此,克服该现有技术所存在的缺陷是本技术领域亟待解决的问题。



技术实现要素:

本发明要解决的技术问题是现有技术缺少一种自动化测试方法,对整个集群系统所包含的存储硬盘及网络设备进行性能及稳定性测试,并对测试结果进行分析汇总,输出可能存在质量问题的设备。

本发明采用如下技术方案:

第一方面,本发明提供了一种面向分布式存储系统的自动化拷机测试方法,在分布式存储系统中,按照网络中路由节点下连接有的一个或者多个服务器的连接关系,以及各路由器之间的上下游关系,建立拷机测试树,其中,各服务器构成所述拷机测试树的叶子节点,所述自动化拷机测试方法包括:

将拷机测试树中相对叶子节点,且位于同一级的上游路由节点,生成所述第一链路环;其中,所述第一链路环,以拷机测试树中所有叶子节点所关联,且位于同一级的上游路由节点构成;

在第一链路环中以各路由节点成对的方式构建位于所述第一链路环中,且位于相邻路由节点下的服务器之间的流入和流出测试;

在完成针对所述第一链路环中包含的各路由节点所连接的各个服务器的流入和流出测试的分配后,在所述拷机测试树中,根据已经分配出去的服务器带宽,更新各个路由节点下所连接的服务器总带宽,并进一步生成第二链路环;以所述第一链路环的处理方式,处理完所述第二链路环中流入和流出测试的分配,在以递归的方式完成所述第二链路环,及其后续链路环中流入和流出测试的分配后,直到剩下零个或者一个路由节点下还拥有服务器带宽,从而完成测试路径规划;以便根据所述测试路径规划完成后续的拷机测试过程。

优选的,作为叶子节点的服务器还分为至少两种类型,其中,在进行所述各个服务器的流入和流出的测试的分配时,需要满足服务器的类型相一致,则所述根据拷机测试树中叶子节点位于同一级的上游路由节点,生成所述第一链路环,具体包括:

根据服务器类型,根据拷机测试树中叶子节点位于同一级的上游路由节点,对应各种类型,分别生成相应类型下的第一链路环;相应的,后续针对第二链路环和其它链路环的操作均以各服务器类型逐一进行一遍相应操作。

优选的,在所述第一链路环或第二链路环中,其中链路环中的路由节点按照各自路由节点下所连接的服务器总带宽大小进行有序排列。

优选的,所述将拷机测试树中相对叶子节点,且位于同一级的上游路由节点,生成所述第一链路环,具体为:

确定所连接的服务器总带宽最小的第一路由节点;

在所述位于同一级的上游路由节点中查找到与所述第一路由节点位于同一级的一个或者多个其他路由节点,从所述一个或者多个其他路由节点中分配出与所述第一路由节点同样大小的带宽,用于生成所述第一链路环。

优选的,所述在第一链路环中以各路由节点成对的方式构建位于所述第一链路环中,且位于相邻路由节点下的服务器之间的流入和流出测试,具体为:

通过随机算法来从所述第一链路环中筛选出第一路由节点,在所述第一链路环中查找到与所述第一路由节点位于同一级的一个或者多个其他路由节点,从所述一个或者多个其他路由节点中分配出与所述第一路由节点同样大小的带宽,用于生成所述第一链路环。

第二方面,本发明还提供了一种面向分布式存储系统的自动化拷机测试方法,在分布式存储系统中,按照网络中路由节点下连接有的一个或者多个服务器的连接关系,以及各路由器之间的上下游关系,建立拷机测试树,其中,作为叶子节点的服务器包括一种或者多种类型,并且相应的流入和流出测试需要针对同一类型的服务器进行,方法包括:

逐一遍历拷机测试树中的各个子节点,在遍历抵达拷机测试树中的第i节点时,触发对相应第i节点下的所有关联叶子节点进行同类型服务器的流入和流出测试关系的建立;其中,相应第i节点下的所有关联叶子节点包括所述第i节点直接下挂的叶子节点和/或所述第i节点通过其下挂的其它节点间接建立关联关系的叶子节点;其中,i为自然数;

在完成所述第i节点下的所有关联叶子节点进行同类型服务器的流入和流出测试关系的建立后,在拷机测试树中删除所述第i节点,以便所述第i节点下关联的叶子节点脱离后续的同类型服务器的流入和流出测试关系的建立过程。

优选的,所述触发对相应第i节点下的所有关联叶子节点进行同类型服务器的流入和流出测试关系的建立,具体包括:

以服务器类型数量计数的初始值作为外层循环的起始条件,并以服务器类型总数量值作为外层循环的结束条件;

在所述外层循环内部,以未寻找到新的叶子节点加入到流入和流出测试队列为内层循环跳出条件,建立内层循环;其中,内层循环用于将第i节点下的第j类服务器建立相互之间的流入和流出测试关系,所述j为自然数。

优选的,所述第i节点下的第j类服务器建立相互之间的流入和流出测试关系,具体包括:

将获取到的第i节点下的一个或者多个第j类服务器逐一的向流入测试队列中添加;并以错开的方式将所述流入测试队列中的一个或者多个第j类服务器向流出测试队列中复制,将起始错开出来的叶子节点添加到所述流出测试队列中的末尾;

其中,流入测试队列和流出测试队列中相对应位置构成流入和流出测试关系。

优选的,若在完成第i节点下服务器的遍历,以及流入测试队列中添加操作后,流入测试队列仅包含一个叶子节点,则标识为遗留叶子节点;根据拷机测试树,梳理可建立链路关系的遗留叶子节点,建立针对相应遗留叶子节点的路径规划。

第三方面,本发明还提供了一种面向分布式存储系统的自动化拷机测试装置,用于实现第一方面所述的面向分布式存储系统的自动化拷机测试方法,所述装置包括:

至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述处理器执行,用于执行第一方面所述的面向分布式存储系统的自动化拷机测试方法。

第四方面,本发明还提供了一种非易失性计算机存储介质,所述计算机存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行,用于完成第一方面所述的面向分布式存储系统的自动化拷机测试方法。

本发明提出的自动化拷机测试方法,只需技术人员按要求定义环境配置即可,整个测试过程及结果分析过程均自动完成。因此本发明较现有技术具有更低的人力成本、时间开销以及对问题硬件误判或漏判风险。

在对网络进行性能测试、稳定性测试时,现有技术多基于服务器设计用例。本发明优选方案中,提出的拷机测试方法,基于整个系统的网络拓扑规划网络测试路径,对各网络硬件的网络性能及稳定性进行测试,除了可以排查出网络异常的服务器外,还可以排查出网络异常的交换机。因此本发明提出的方法在定位问题硬件时,比传统方法更为精确。

【附图说明】

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

图1是本发明实施例提供的一种面向分布式存储系统的自动化拷机测试方法流程图;

图2是本发明实施例提供的一种拷机测试树拓扑图;

图3是本发明实施例提供的一种更新后的拷机测试树拓扑图;

图4是本发明实施例提供的一种更新后的拷机测试树拓扑图;

图5是本发明实施例提出的一种rec_path_list与trans_path_list关系结构示意图;

图6是本发明实施例提出的一种面向分布式存储系统的自动化拷机测试装置结构示意图。

【具体实施方式】

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

在本发明的描述中,术语“内”、“外”、“纵向”、“横向”、“上”、“下”、“顶”、“底”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明而不是要求本发明必须以特定的方位构造和操作,因此不应当理解为对本发明的限制。

此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。

实施例1:

本发明实施例1提供了一种面向分布式存储系统的自动化拷机测试方法,在分布式存储系统中,按照网络中路由节点下连接有的一个或者多个服务器的连接关系,以及各路由器之间的上下游关系,建立拷机测试树,其中,各服务器构成所述拷机测试树的叶子节点,如图1所示,所述自动化拷机测试方法包括:

在步骤201中,根据拷机测试树中叶子节点位于同一级的上游路由节点,生成所述第一链路环。

其中,所述第一链路环,以拷机测试树中叶子节点位于同一级的上游路由节点构成。以图2为例,其中,第一链路环有第一级路由节点中的400m路由节点、300m路由节点和200m路由节点构成,相应的第一链路环以其中最小带宽路由节点200m为第一链路环的入环条件和相应其他路由节点扣除带宽的依据。

在步骤202中,在第一链路环中以各路由节点成对的方式构建位于所述第一链路环中,且位于相邻路由节点下的服务器之间的流入和流出测试。

在步骤203中,在完成针对所述第一链路环中包含的各路由节点所连接的各个服务器的流入和流出测试的分配后,在所述拷机测试树中,根据已经分配出去的服务器带宽,更新各个路由节点所连接的服务器总带宽,并进一步生成第二链路环;以所述第一链路环的处理方式,处理完所述第二链路环中流入和流出测试的分配;在以递归的方式完成所述第二链路环,及其后续链路环中流入和流出测试的分配后,直到剩下零个或者一个路由节点下还拥有服务器带宽,从而完成测试路径规划;以便根据所述测试路径规划完成后续的拷机测试过程。

相应的,如图2为例的拷机测试树在完成第一链路环的建立,以及剔除相应因为建立第一链路环而支出的路由节点的带宽后,原本的拷机测试树更新如图3所示,其中,原本图2中最左侧的400m路由节点更新为图3中最左侧的200m路由节点(因为相应400m路由节点为建立第一链路环支出了200m的带宽);而相应的原本图2中中间的300m路由节点更新为图3中右侧的100m路由节点(因为相应300m路由节点为建立第一链路环支出了200m的带宽);此时位于原本图2中最右边的200m路由节点因为全部带宽都为建立第一链路环而支出了,因此,在图3中直接被剔除了。

进一步的,如图4所示,为相应图3在建立了图3中所示的第二链路环之后整个拷机测试树所剩下的路由节点和相应路由节点下的服务器示意图。

本发明提出的自动化拷机测试方法,只需技术人员按要求定义环境配置即可,整个测试过程及结果分析过程均自动完成。因此本发明较现有技术具有更低的人力成本、时间开销以及对问题硬件误判或漏判风险。

在对网络进行性能测试、稳定性测试时,现有技术多基于服务器设计用例。本发明优选方案中,提出的拷机测试方法,基于整个系统的网络拓扑规划网络测试路径,对各网络硬件的网络性能及稳定性进行测试,除了可以排查出网络异常的服务器外,还可以排查出网络异常的交换机。因此本发明提出的方法在定位问题硬件时,比传统方法更为精确。

结合本发明实施例,作为叶子节点的服务器还分为至少两种类型,其中,在进行所述各个服务器的流入和流出的测试的分配时,需要满足服务器的类型相一致,则所述根据拷机测试树中叶子节点位于同一级的上游路由节点,生成所述第一链路环,具体包括:

根据服务器类型,根据拷机测试树中叶子节点位于同一级的上游路由节点,对应各种类型,分别生成相应类型下的第一链路环;相应的,后续针对第二链路环和其它链路环的操作均以各服务器类型逐一进行一遍相应操作。其中,所述的相应操作包括上述步骤202中的构成流入和流出测试,以及步骤203中的进行节点剔除、服务器带宽更新和新链路环生成等等。

结合本发明实施例,在所述第一链路环或第二链路环中,其中链路环中的路由节点按照各自所连接的服务器总带宽大小进行有序排列。

在本发明实施例中,所述将拷机测试树中相对叶子节点,且位于同一级的上游路由节点,生成所述第一链路环,具体为:

在步骤2021中,确定所连接的服务器总带宽最小的第一路由节点。以图2为例,即找到了图中最右侧的200m带宽的路由节点为所连接的服务器总带宽最小的第一路由节点。

在步骤2022中,在所述位于同一级的上游路由节点中查找到与所述第一路由节点位于同一级的一个或者多个其他路由节点,从所述一个或者多个其他路由节点中分配出与所述第一路由节点同样大小的带宽,用于生成所述第一链路环。

结合本发明实施例,所述在所述第一链路环中,指定所连接的服务器的第一路由节点,除了上述步骤2021中提出的所连接的服务器总带宽最小的第一路由节点作为第一路由节点的选取方式以外,还可以采用另一种随机算法的方式,具体为:通过随机算法来从所述第一链路环中筛选出第一路由节点,在所述第一链路环中查找到与所述第一路由节点位于同一级的一个或者多个其他路由节点,从所述一个或者多个其他路由节点中分配出与所述第一路由节点同样大小的带宽,用于生成所述第一链路环。其中,具体随机算法自身可以借鉴现已有的算法来实现,并非本发明的实质性改进点,在此不过多赘述。相对而言,采用排序的方式能够更快速的实现更新后拷机测试树中路由节点数量上的减少,并且,能够保证链路环的大小排列特性,有利于计算资源的规划和分布;即根据历史前两个的链路环的大小来预测剩下的链路环的大小变化,从而预先分配和计算资源。

实施例2:

本发明除了提供如实施例1所描述的测试关系的建立方式外,还提供了另一种实现方式,相比较实施例1的实现方式而言,本发明实施例所提出的方式实现起来更为简洁,但是其实现却有着比实施例1更大的技术约束,即在本发明实施例中相应的各个服务器的流入和流出测试的带宽是相匹配的;这一点约束在实施例1中是无需重点考虑的。

在本发明实施例中实现过程,类似实施例1中的,在分布式存储系统中,按照网络中路由节点下连接有的一个或者多个服务器的连接关系,以及各路由器之间的上下游关系,建立拷机测试树,其中,作为叶子节点的服务器包括一种或者多种类型,并且相应的流入和流出测试需要针对同一类型的服务器进行,方法包括:

在步骤301中,逐一遍历拷机测试树中的各个子节点,在遍历抵达拷机测试树中的第i节点时,触发对相应第i节点下的所有关联叶子节点进行同类型服务器的流入和流出测试关系的建立;其中,相应第i节点下的所有关联叶子节点包括所述第i节点直接下挂的叶子节点和/或所述第i节点通过其下挂的其它节点间接建立关联关系的叶子节点;其中,i为自然数;

在步骤302中,在完成所述第i节点下的所有关联叶子节点进行同类型服务器的流入和流出测试关系的建立后,在拷机测试树中删除所述第i节点,以便所述第i节点下关联的叶子节点脱离后续的同类型服务器的流入和流出测试关系的建立过程。

本发明提出的自动化拷机测试方法,只需技术人员按要求定义环境配置即可,整个测试过程及结果分析过程均自动完成。因此本发明较现有技术具有更低的人力成本、时间开销以及对问题硬件误判或漏判风险。

在本发明实施例中,所述触发对相应第i节点下的所有关联叶子节点进行同类型服务器的流入和流出测试关系的建立,具体包括:

以服务器类型数量计数的初始值作为外层循环的起始条件,并以服务器类型总数量值作为外层循环的结束条件;

在所述外层循环内部,以未寻找到新的叶子节点加入到流入和流出测试队列为内层循环跳出条件,建立内层循环;其中,内层循环用于将第i节点下的第j类服务器建立相互之间的流入和流出测试关系,所述j为自然数。

在本发明实施例中,所述第i节点下的第j类服务器建立相互之间的流入和流出测试关系,具体包括:

将获取到的第i节点下的一个或者多个第j类服务器逐一的向流入测试队列中添加;并以错开的方式将所述流入测试队列中的一个或者多个第j类服务器向流出测试队列中复制,将起始错开出来的叶子节点添加到所述流出测试队列中的末尾;其中,流入测试队列和流出测试队列中相对应位置构成流入和流出测试关系。如图5所示,其中的流入测试队列表现为a,b,c,d;而相应的被复制过去的流出测试队列表现为b,c,d,a;两者之间按照一一对应的关系来看,流入测试队列中的a对应于流出测试队列中的b,流入测试队列中的b对应于流出测试队列中的c,流入测试队列中的c对应于流出测试队列中的d,从而利用上述简单的错开队列复制的方式,完成了服务器之间的测试关系建立。

在本发明实施例中,若在完成第i节点下服务器的遍历,以及流入测试队列中添加操作后,流入测试队列仅包含一个叶子节点,则标识为遗留叶子节点;根据拷机测试树,梳理可建立链路关系的遗留叶子节点,建立针对相应遗留叶子节点的路径规划。例如:将一些即便是类型上无法完全匹配的遗留叶子节点,通过相应遗留叶子节点的相互兼容性配置(该配置过程为本领域技术人员公知技术,在此不做过多赘述)来完成测试;也可以在其它服务器拷机测试完成后,从完成测试的服务器中选择来与所述遗留叶子节点匹配完成测试等等。

实施例3:

本发明实施例3是基于实施例2所提出技术方案基础上,进一步融入了本发明相关数组、函数和循环逻辑之后的具体实现过程,

步骤401设定networktree树的根节点为当前节点,然后进入步骤402;此处超脱递归循环以外的开端设置,真正的循环从步骤402开始。

步骤402定义一个临时链表list,该list是当前节点的items的拷贝。其中,item表示该设备的所有下连设备,例如items=“{4,5,6}”表示该设备下连id为4、5、6的3台设备。其中,设备可能是路由器,也可能是服务器,具体代表那种设备根据具体情况而定;在复杂的实现场景中,一台路由器之下可以连接其他路由器,但是也可以同时连接有服务器可能。

每一次递归跳转到步骤402时,会在步骤412中完成依次将当前节点items设为当前节点并进入步骤402的操作,配合步骤412包裹整个递归。在本发明实施例中,主要体现了以下的循环嵌套思想:从networktree树的根节点出发逐一的向networktree树下面的节点进行遍历,这构成第一套递归循环;而在这第一套递归循环里,还包含了对当前节点下所包含的每一种类型服务器建立流入流出队列的第二套递归循环,其中,type_index为相应第二套循递归环判断是否完成的依据;而在第二套循环内有包含了第三套递归循环,所述第三套递归循环由chose_index作为跳出的依据,而所述chose_index作为第三套递归循环跳出的条件就是第一套递归循环中当前节点下的,且type_index类型下的服务器总数量。需要说明的是,在遍历到networktree树不同节点(即由第一套递归循环动作产生),而相应不同节点下不同的服务器类型下的服务器总数量都会因为测试环境形成不同的数值情况。

在本发明方案中,始终都是为list中的第一个节点进行路径规划,直到所有type_index都规划完,这里是一个遍历过程的循环,这个遍历过程的循环通过type_index来控制,这个循环终止,在步骤410。步骤402是递归过程的一部分,这里不能简单的将当前节点理解为root节点,配合步骤412包裹整个递归,同时步骤402也是一个递归的循环动作的开始,这个递归循环终止条件在步骤411和步骤412一起控制。

步骤403设定当前规划路径的分类号type_index为0,进入步骤404。

type_index是对服务器类型的分类标识值,当前有几个带宽类型的服务器,这里type_index为0,可以理解为是服务器类型中的第1类。

步骤404设定当前选择位置为chose_index,chose_index的值为1。然后进入步骤405。

这里和步骤412配合起来看的话,相当于就是每次回到步骤404都重置chose_index了。

对于list中的第一个节点的第type_index类服务器的规划,始终都是以节点为单位去组织环,直到无环可组为止,这里包含了两个循环,一个循环是针对一type_index类组环的循环,另一个是将list第1个节点下所有type_index都规划完的循环,前者的终止条件在步骤405),后者的终止条件在步骤406。

步骤405判断chose_index的值是否大于list在相应type_index类中的长度,这里是用来判断是否完成了一个环的规划,如果大于,则表明遍历完了一轮子路由节点进入步骤409,否者进入步骤406。

步骤406从list的第chose_index节点下选取一个位于其父节点sub_leaf_type_list[type_index],且path_allocation为“false”的叶子节点。以配置文件中的记录在内存中形成networktree树形结构,该树形结构与传统树不同,主要体现在其叶子节点的父节点,其分支节点并不是通过单一链来组织,而是采用多条链来组织,链的数目为service_link_type,这多条链的首地址以数组形式进行组织,数组记为sub_leaf_type_list[]。其中,path_allocation表示该设备是否已规划测试路径;true表示已经分配了;false表示还没分配。

从第chose_index节点下的任意选择一个第type_index类,path_allocation为“false”的叶子节点,即随意找一个还没有安排进rec_path_list和trans_path_list的子路由器,将其ip_addr插入到rec_path_list中,并将该节点的“path_allocation”修改为“true”,然后进入步骤407。其中,ip_addr为服务器的ip地址,只有items为空的节点需要给这个字段赋值,对于items不为空的节点则不需要对此字段赋值;一个链表是rec_path_list,其中顺序存放接收节点的ip地址,一个是trans_path_list,其中存放的是发送节点的ip地址,链表对应相同位置的ip地址形成收发对,表征一条网络测试通路。

如果其下没有可选叶子节点且chose_index==1,则进入步骤410;如果其下没有可选叶子节点,且chose_index等于list的长度(到末尾了),且ring_index等于rec_path_list的长度(ring_index就是rec_path_list的末尾),则将ring_index对应叶子节点的“path_allocation”置为“false”并从rec_path_list中删除(因为rec_path_list和trans_path_list是错开的,所以,必定有一个是对不上的,这里就是那个遗留下来的叶子节点,即出现了实施例1中所描述的在完成第i节点下服务器的遍历,以及流入测试队列中添加操作后,流入测试队列仅包含一个叶子节点,则标识为遗留叶子节点的情况),然后进入步骤410(其中,步骤410是针对已经完成一类型服务器环梳理后,进入下一个类的跳转触发点);如果其下没有可选节点,且chose_index!=1,则修改chose_index=chose_index+1,然后进入步骤405。

步骤407、如果rec_path_list中的元素个数与trans_path_list的元素个数差值为1(这一轮没有有效加入进来叶子节点,所以下面直接增加chose_index的值),修改chose_index=chose_index+1(让路由子节点的扫描,进一步下移到items中的下一个节点),并记录当前位置插入元素在rec_path_list中的位置,记为ring_index,然后进入步骤406,否则进入步骤408。

步骤408、将先前插入rec_path_list中的元素插入到trans_path_list中(为了能够形成错位的数组排列,如图5所示,其中最右侧的数组即为trans_path_list,在本发明其他实施例中也被描述为流出测试队列,而其左侧相邻的数组为rec_path_list,在本发明其他实施例中也被描述为流入测试队列),并将该节点所有祖先节点的actual_link都自减本节点的actual_link,然后修改chose_index=chose_index+1,进入步骤405。如图5所示,其中的流入测试队列表现为a,b,c,d;而相应的被复制过去的流出测试队列表现为b,c,d,a;两者之间按照一一对应的关系来看,流入测试队列中的a对应于流出测试队列中的b,流入测试队列中的b对应于流出测试队列中的c,流入测试队列中的c对应于流出测试队列中的d,从而利用上述简单的错开队列复制的方式,完成了服务器之间的测试关系建立。

步骤409将rec_path_list中ring_index处的元素插入到trans_path_list中(如图5所示,其中,ring_index即为a,而相应完成上述元素插入动作后的trans_path_list为图5最右侧的数组),并将该节点所有祖先节点的actual_link都自减本节点的actual_link,然后进入步骤404。

因为每次都是从当前list的第一个节点出发,而且每次都以list的第一个节点为起点,然后依次从list的节点依次选一个节点(该过程通过chose_index来控制),然后成环,为了让list的第一个节点得到所有type_index类的节点都被尽力分配(有可能有部分在该层无法分配,这种就不分配了,等到步骤412进入下一层的规划,在下一层的规划进行),这里需要这个循环动作,在循环结束后会去找下一个type_index类,如果所有type_index类的叶子节点都被这样被分配完,会更新list——将第一个节点从list里删除掉,所以对于下一轮循环,虽然chose_index仍然为1,但这里实际指的是上一次循环的第二个元素;

步骤410、type_index=type_index+1,判断当前type_index是否大于service_link_type_num(service_link_type_num为当前叶子节点的服务器类型总数量值),如果不大于,则进入步骤404,这里是想在一轮当前节点list操作中把所有类型的都遍历一遍;否则进入步骤411。

步骤411、将list中的第一个元素从list中删除,并判断list的长度,如果list的长度大于1,则进入步骤403,否则进入步骤412。

步骤412、检查当前节点items是否全为叶子节点,如果全为叶子节点,则对当前节点的路径规划结束,如果当前节点是root节点,则整个规划算法结束;如果不全为叶子节点,则依次将当前节点items设为当前节点并进入步骤402,直至处理完items中所有节点,则对当前节点的路径规划结束,如果当前节点是root节点,则整个算法结束。

该步配合步骤402形成一个递归过程,从根节点出发去遍历整个树,当root节点规划完了,这时候,会对依次将root节点的子节点依次设为当前节点,再次进行规划,同样一直递归下去,直到叶子节点的父节点那一层为止。

实施例4:

如图6所示,是本发明实施例的面向分布式存储系统的自动化拷机测试装置的架构示意图。本实施例的面向分布式存储系统的自动化拷机测试装置包括一个或多个处理器21以及存储器22。其中,图6中以一个处理器21为例。

处理器21和存储器22可以通过总线或者其他方式连接,图6中以通过总线连接为例。

存储器22作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序和非易失性计算机可执行程序,如实施例1中的面向分布式存储系统的自动化拷机测试方法。处理器21通过运行存储在存储器22中的非易失性软件程序和指令,从而执行面向分布式存储系统的自动化拷机测试方法。

存储器22可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器22可选包括相对于处理器21远程设置的存储器,这些远程存储器可以通过网络连接至处理器21。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

所述程序指令/模块存储在所述存储器22中,当被所述一个或者多个处理器21执行时,执行上述实施例1中的面向分布式存储系统的自动化拷机测试方法,例如,执行以上描述的图1所示的各个步骤。

值得说明的是,上述装置和系统内的模块、单元之间的信息交互、执行过程等内容,由于与本发明的处理方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。

本领域普通技术人员可以理解实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(rom,readonlymemory)、随机存取存储器(ram,randomaccessmemory)、磁盘或光盘等。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

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