一种基于存储多路径间的负载均衡方法及系统与流程

文档序号:12362577阅读:1156来源:国知局
一种基于存储多路径间的负载均衡方法及系统与流程

本发明涉及计算机存储多路径负载均衡算法领域,更具体地说,涉及一种基于存储多路径间的负载均衡方法及系统。



背景技术:

目前操作系统或设备供应商提供的多路径驱动程序,其采用的多路径负载均衡算法有以下主要几种:1、round robin;2、最短IO队列;3、最短服务时间。以上几种负载均衡算法根据不同的参数,计算出一个目前最优的路径,用于执行当前的IO请求。每种算法的复杂度不相同,但无论哪一种算法,其选择的路径,都是不确定的。如果由于系统维护的需要,或系统测试的需要,必须指定某个存储逻辑单元的IO操作所经由的路径,以上几种负载均衡算法均不适用。

因此,如何解决上述问题,是本领域技术人员需要解决的。



技术实现要素:

本发明的目的在于提供一种基于存储多路径间的负载均衡方法及系统,以实现可干预的负载均衡路径的选择。

为实现上述目的,本发明实施例提供了如下技术方案:

一种基于存储多路径间的负载均衡方法,包括:

通过应用层API接口响应权值参数配置指令,设置每个多路径存储单元的每条可用路径的权值;

在分配IO请求时,利用负载均衡算法及所述每条可用路径的权值,确定负载均衡结果路径。

其中,所述利用负载均衡算法及所述每条可用路径的权值,确定负载均衡结果路径,包括:

利用每个多路径存储单元的每条可用路径的权值,选取权值大于预定阈值的路径作为初选路径组;

利用负载均衡算法从所述初选路径组中选取负载均衡结果路径。

其中,若所述初选路径组中的路径数量为一个,则将所述初选路径组中的路径作为负载均衡结果路径。

其中,所述在分配IO请求时,利用负载均衡算法及所述每条可用路径的权值,确定负载均衡结果路径,包括:

在分配IO请求时,按照每条可用路径的权值大小,将所有IO请求分配到每个可用路径上,每个可用路径分配的IO请求的数量与自身的权值成正比。

其中,在分配IO请求之前,还包括:

将每个多路径存储单元的每条可用路径按照权值大小进行降序排序,根据排序顺序将所有IO请求分配到每个可用路径上。

其中,本方案还包括:通过所述应用层API接口响应权值参数查询指令;其中,所述应用层API接口通过动态库的形式进行封装。

一种基于存储多路径间的负载均衡系统,包括:

路径权值设置模块,用于通过应用层API接口响应权值参数配置指令,设置每个多路径存储单元的每条可用路径的权值;

负载均衡结果路径确定模块,用于在分配IO请求时,利用负载均衡算法及所述每条可用路径的权值,确定负载均衡结果路径。

其中,所述负载均衡结果路径确定模块包括:

初选路径组选取模块,用于利用每个多路径存储单元的每条可用路径的权值,选取权值大于预定阈值的路径作为初选路径组;

负载均衡结果路径确定单元,用于利用负载均衡算法从所述初选路径组中选取负载均衡结果路径。

其中,所述负载均衡结果路径确定模块包括:

IO请求分配单元,用于在分配IO请求时,按照每条可用路径的权值大小,将所有IO请求分配到每个可用路径上,每个可用路径分配的IO请求的数量与自身的权值成正比。

其中,本方案还包括:

权值参数查询模块,用于通过所述应用层API接口响应权值参数查询指令;其中,所述应用层API接口通过动态库的形式进行封装。

通过以上方案可知,本发明实施例提供的一种基于存储多路径间的负载均衡方法及系统,包括:通过应用层API接口响应权值参数配置指令,设置每个多路径存储单元的每条可用路径的权值;在分配IO请求时,利用负载均衡算法及所述每条可用路径的权值,确定负载均衡结果路径;可见,在本实施例中,为每个多路径存储单元LUN的每一条可用的路径设置一个权值,相当于设定了选择路径的优先级,在系统维护或系统测试时,通过此方法可指定某个存储逻辑单元的IO操作必须经由的路径,实现可干预的负载均衡路径的选择。

附图说明

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

图1为本发明实施例公开的一种基于存储多路径间的负载均衡方法流程示意图;

图2为本发明实施例公开的负载均衡系统结构示意图;

图3为本发明实施例公开的一种基于存储多路径间的负载均衡系统结构框图。

具体实施方式

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

本发明实施例公开了一种基于存储多路径间的负载均衡方法及系统,以实现可干预的负载均衡路径的选择。

参见图1,本发明实施例提供的一种基于存储多路径间的负载均衡方法,包括:

S101、通过应用层API接口响应权值参数配置指令,设置每个多路径存储单元的每条可用路径的权值;

其中,本方案还包括:通过所述应用层API接口响应权值参数查询指令;其中,所述应用层API接口通过动态库的形式进行封装。

S102、在分配IO请求时,利用负载均衡算法及所述每条可用路径的权值,确定负载均衡结果路径。

其中,所述利用负载均衡算法及所述每条可用路径的权值,确定负载均衡结果路径,包括:

利用每个多路径存储单元的每条可用路径的权值,选取权值大于预定阈值的路径作为初选路径组;

利用负载均衡算法从所述初选路径组中选取负载均衡结果路径。

其中,若所述初选路径组中的路径数量为一个,则将所述初选路径组中的路径作为负载均衡结果路径。

具体的,在本实施例中提供的基于权值的负载均衡算法包括:最大权值路径集算法:先根据存储逻辑单元的所有路径的权值,选取权值最高的一组路径,再根据固定的负载均衡算法选取,通过算法选择的路径作为负载均衡结果路径;如果只有一个路径的权值最高,则忽略配置的多路径负载均衡算法,以此路径作为负载均衡结果路径。

其中,所述在分配IO请求时,利用负载均衡算法及所述每条可用路径的权值,确定负载均衡结果路径,包括:

在分配IO请求时,按照每条可用路径的权值大小,将所有IO请求分配到每个可用路径上,每个可用路径分配的IO请求的数量与自身的权值成正比。

其中,在分配IO请求之前,还包括:

将每个多路径存储单元的每条可用路径按照权值大小进行降序排序,根据排序顺序将所有IO请求分配到每个可用路径上。

具体的,在本实施例中提供的基于权值的负载均衡算法包括:权值模型负载分配算法:先将所有可用路径按权值排序,并将逻辑单元的所有IO请求按权值大小分配到每个可用路径的IO队列。

具体的,在本实施例中提供一组编程接口(API),用于实现用户层应用程序与多路径驱动程序间的权值数据的查询与配置。接口与平台无关,通过动态库的形式封装。接口内容包含以下操作:

参见图2,多路径驱动程序内部数据结构中存储各个路径的权值数据。通过平台相关的消息机制,响应应用层程序的配置与查询请求。权值参数配置过程中,采用spin lock方式与内核保持数据访问的互斥。权值参数配置成功后,下一次IO请求将参考新的路径权值。

具体的,参见图2,本方案分两部分实施:应用层API,以单独的共享库形式提供;内核层功能模块,集成于多路径驱动程序内部,随内核加载驱动程序时一同加载。

其中,应用层API,封装与权值配置与查询功能相关的接口,供应用程序调用。API提供C++语言标准的接口调用方式,可在各类操作系统平台上实现各自的共享库,以保证上层应用程序代码的平台无关性。内核层功能模块的实现与平台相关。因为路径权值数据需被多路径负载均衡算法参考,所以权值数据存储于多路径驱动程序数据区中。通过多路径驱动程序提供的内核参数配置与查询方法,实现路径权值数据的配置与查询功能。同时提供一组缺省值,在用户没有配置多路径权值的时候,各路径权值均为默认的最高权值。

具体的,在本方案中,通过为每个多路径存储单元(LUN)的每一条可用的路径设置一个权值,实现对存储设备多路径负载均衡算法的覆盖与补充。并且允许计算机系统管理员实时的设置多路径存储单元的每一条路径的IO优先级,一旦优先级设置成功,多路径驱动的负载均衡算法将会按照设定的优先级去选择下一次IO操作的路径。在本方案中引入两种负载均衡算法:

1、最大权值路径集算法:先选定权值最高的一组路径集,再叠加一个通用负载均衡算法,在权值最高的一组路径中计算出结果路径;

2、权值模型负载分配算法:将逻辑单元的IO请求,按权值比例分配到每个路径。

下面对本发明实施例提供的负载均衡系统进行介绍,下文描述的负载均衡系统与上文描述的负载均衡方法可以相互参照。

参见图3,本发明实施例提供的一种基于存储多路径间的负载均衡系统,包括:

路径权值设置模块100,用于通过应用层API接口响应权值参数配置指令,设置每个多路径存储单元的每条可用路径的权值;

负载均衡结果路径确定模块200,用于在分配IO请求时,利用负载均衡算法及所述每条可用路径的权值,确定负载均衡结果路径。

基于上述技术方案,所述负载均衡结果路径确定模块包括:

初选路径组选取模块,用于利用每个多路径存储单元的每条可用路径的权值,选取权值大于预定阈值的路径作为初选路径组;

负载均衡结果路径确定单元,用于利用负载均衡算法从所述初选路径组中选取负载均衡结果路径。

基于上述技术方案,所述负载均衡结果路径确定模块包括:

IO请求分配单元,用于在分配IO请求时,按照每条可用路径的权值大小,将所有IO请求分配到每个可用路径上,每个可用路径分配的IO请求的数量与自身的权值成正比。

基于上述技术方案,本方案还包括:

权值参数查询模块,用于通过所述应用层API接口响应权值参数查询指令;其中,所述应用层API接口通过动态库的形式进行封装。

本发明实施例提供的一种基于存储多路径间的负载均衡方法及系统,包括:通过应用层API接口响应权值参数配置指令,设置每个多路径存储单元的每条可用路径的权值;在分配IO请求时,利用负载均衡算法及所述每条可用路径的权值,确定负载均衡结果路径;可见,在本实施例中,为每个多路径存储单元LUN的每一条可用的路径设置一个权值,相当于设定了选择路径的优先级,在系统维护或系统测试时,通过此方法可指定某个存储逻辑单元的IO操作必须经由的路径,实现可干预的负载均衡路径的选择。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

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