一种多控制器存储阵列读写负载均衡方法及装置与流程

文档序号:12718550阅读:326来源:国知局
一种多控制器存储阵列读写负载均衡方法及装置与流程

本发明属于计算机存储访问技术领域,尤其涉及一种多控制器存储阵列读写负载均衡方法及装置。



背景技术:

主机(HOST)在访问多控制器存储设备的逻辑单元(LUN)时,由于各存储控制器共享后端磁盘,一个LUN可以同时共存于各存储控制器系统中,为了有效地组织和管理存储资源,取其中一个控制器为优选控制器,也即主控制器,其他存储控制器称为此LUN的备控制器。由于每个存储控制器都有多个业务网络端口(目标端口),因此主机可以通过多条链路来访问同一个LUN,构成多路径场景。

在多路径场景下,主机访问一个LUN存在多条读写(I/O)链路,但不同链路由于物理特性(比如千兆、万兆或FC等)或逻辑流程的不同而性能差异很大。因此,在I/O分发时读写指令需要在多条链路间进行路径选择,相关算法的合理与否决定了I/O性能的优劣。同时,由于主控制器对应的链路默认优先级最高,I/O优先从这些路径下发,因此LUN存储控制器属主需要在各控制器间进行均衡分配,以免存储控制器彼此间I/O负载差别过大,导致性能大幅下降。

目前,多控制器存储设备中逻辑卷LUN属主分配和多链路路径选择方案多种多样,各厂商都有自己的多路径软件和逻辑卷属主配置子系统,种类繁多、配置复杂,并且存在以下问题:

逻辑卷主控制器的分配不够合理。目前,传统的LUN控制器属主的配置都是通过系统管理界面手动操作的,由于难于全面掌握各控制器的状态信息,管理员很难有效地进行主控制器的划分。

I/O路径规划对性能和可用性的影响较大。现有的多路径配置无法有效地约束I/O下发路径,I/O在一台控制器上拥堵或饥饿都会损耗I/O性能,对可用性也造成了一定的影响。

现有的I/O路径选择算法一般基于启发式的方法,灵活性不足,无法做到自适应地根据当前各控制器负载及各I/O路径物理特性进行路径切换。



技术实现要素:

本发明的目的是提供一种多控制器存储阵列读写负载均衡方法及装置,以避免现有技术中逻辑卷主控制器的分配不够合理,以I/O路径规划无法有效约束的问题。

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

一种多控制器存储阵列读写负载均衡方法,应用于具有多个控制器的存储阵列,所述多控制器存储阵列读写负载均衡方法,包括:

采集存储阵列中各个控制器的基本读写信息,根据各个控制器的基本读写信息,计算得到每个控制器的决策指数,选取决策指数最优的控制器为逻辑单元LUN的主控制器;

将目标端口按照所属控制器进行分组,并根据逻辑单元LUN所在的控制器来设置目标端口组TPG的属性,为逻辑单元LUN主控制器对应的目标端口组设置更高的优先级;

获取主机访问逻辑单元LUN的路径的状态,建立增强学习算法模型,并根据增强学习算法模型计算得到主机在下一次需要变换访问逻辑单元LUN的路径时对应的最优路径。

进一步地,所述各个控制器的基本读写信息包括控制器的带宽、IOPS、LUN数目、LUN总容量、总I/O error率、故障率、I/O突发率、总I/O量。

进一步地,所述根据各个控制器的基本读写信息,计算得到每个控制器的决策指数,其中所述决策指数计算公式如下:

其中,Z为决策指数,为权重因子,X={x1,…,xi,…,xn}为基本读写信息的性能表征参数。

进一步地,所述主机访问逻辑单元LUN的路径的状态,包括路径的响应时间t、路径相对吞吐量p、排队I/O大小w和请求I/O大小r。

进一步地,所述增强学习算法模型的训练数据包括:动作A,状态S和反馈值R,其中:

A={a1,a2,…,aN},表示从当前路径切换到其他路径的所有可能;

表示所有N条路径的一次状态;

反馈值R对应在某种状态下执行了某种动作后,得到的反馈:

R(t,p,w,r)=α/t+β*p+δ/w+μ/r+T

其中α、β、δ、μ分别为可调节的权重系数,用于控制当前路径的状态对反馈值的影响程度,其中T表示主控制器对应路径的权重。

本发明还提出了一种多控制器存储阵列读写负载均衡装置,应用于具有多个控制器的存储阵列,所述多控制器存储阵列读写负载均衡装置,包括:

主控制器选择模块,用于采集存储阵列中各个控制器的基本读写信息,根据各个控制器的基本读写信息,计算得到每个控制器的决策指数,选取决策指数最优的控制器为逻辑单元LUN的主控制器;

配置模块,用于将目标端口按照所属控制器进行分组,并根据逻辑单元LUN所在的控制器来设置目标端口组TPG的属性,为逻辑单元LUN主控制器对应的目标端口组设置更高的优先级;

路径选择模块,用于获取主机访问逻辑单元LUN的路径的状态,建立增强学习算法模型,并根据增强学习算法模型计算得到主机在下一次需要变换访问逻辑单元LUN的路径时对应的最优路径。

本发明提出的一种多控制器存储阵列读写负载均衡方法及装置,通过各个控制器的基本读写信息,计算得到每个控制器的决策指数,选取决策指数最优的控制器为逻辑单元LUN的控制器属主,并通过增强学习算法模型来选择访问LUN的路径,以控制I/O的下发路径,使I/O的负载均衡度达到最好,性能达到最优。

附图说明

图1为本发明一种多控制器存储阵列读写负载均衡方法流程图;

图2为本发明实施例逻辑单元选取主控制器方法流程图;

图3为本发明一种多控制器存储阵列读写负载均衡装置结构示意图。

具体实施方式

下面结合附图和实施例对本发明技术方案做进一步详细说明,以下实施例不构成对本发明的限定。

本技术方案在双控制器或多控制器的场景下,创建逻辑单元(或者称为逻辑卷)LUN之前,首先收集各控制器的基本读写信息(I/O统计信息),并根据设定的算法决定相应的控制器属主,然后据此通过LIO进行存储端口和端口组的配置,为LUN提供多路径访问。当属主控制器故障时,I/O路径切换到备控制器的端口组,实现失效备援机制。最后,当新创建的LUN投入使用后,反馈并更新各控制器的基本读写信息。

在通过存储设备创建存储池和逻辑卷时,卷和池的控制器属主的选择是由用户决定的,用户的选择主要是根据经验来判断的,并不总能反应正常状况,使I/O性能达到最优。为了提高主机访问多控制器存储设备时的性能,需要根据现有的多控制器的状况来决定新建LUN的主控制器。

本实施例一种多控制器存储阵列读写负载均衡方法,如图1所示,包括如下步骤:

步骤S1、采集存储阵列中各个控制器的基本读写信息,根据各个控制器的基本读写信息,计算得到每个控制器的决策指数,选取决策指数最优的控制器为逻辑单元LUN的主控制器。

具体而言,如图2所示,在新建逻辑单元时,首先采集各个控制器的基本I/O信息,包括带宽、IOPS等,然后通过一定的统计方法计算求取均值、方差和积分等性能表征参数,接着,将给定的权重因子与表征向量进行加权平均计算,得到每个控制器的决策指数,最后,选取决策指数较大的控制器为新建逻辑卷LUN的主控制器。

本实施例根据存储的特性,选取各个控制器的带宽、IOPS、LUN数目、LUN总容量、总I/O error率、故障率、I/O突发率、总I/O量来作为性能指标,计算并表示其性能表征参数为X={x1,…,xi,…,xn},如性能指标的均值、方差等。为了消除数值量纲不同造成的影响,将数据进行归一化处理。以两个控制器为例,Xi与Yi分别表示双端控制器各自的第i个参数。

Xi=Xi_observe/(Xi_observe+Yi_observe)

Yi=Yi_observe/(Xi_observe+Yi_observe)

权重因子可由管理员根据应用场景的不同而设置不同的值,以决定主要的影响因素。两个控制器的LUN的总带宽均值相同,但是其方差有较大差别,而且一边的I/O突发率明显高于对端,如果新建的LUN主要应用于平滑的I/O顺序读写,则应该将I/O突发率和方差对应项的权重因子提高。

本实施例决策指数Z计算公式如下:

当配置信息的数据积累到一定程度时,可以用线性回归的方法来自适应地得到权重因子,增加了系统的智能性和自动化程度。

两个控制器通过加权求和公式(如公式1所示)得到一个决策指数,比较两个决策指数,数值较大的控制器为新建逻辑卷的主控制器。容易理解的是,本实施例通过加权求和的方法来计算决策指数,还可以通过其他方法来计算决策指数,例如采用机器学习模型来训练得到一个计算决策指数的模型,然后输入采集的各个控制器的基本读写信息,直接输出决策指数。本发明不限于用来计算决策指数的具体方法。

本实施例充分利用各控制器的I/O统计信息,包括但不限于带宽、IOPS、LUN数目、LUN总容量、总I/O率、故障率、I/O突发率、总I/O量等,并根据要创建的LUN的应用场景,设定相应的加权因子,计算出各存储控制器的决策指数,来决定新建LUN的主控制器。当配置信息的数据足够多时,可以用线性回归的方法来自学习得到权重因子。

分配好新建LUN的主控制器后,接下来在安装了LIO(Linus_IO)模块的主控制器上进行端口组的划分和配置,并更新I/O统计信息。

步骤S2、将目标端口按照所属控制器进行分组,并根据逻辑单元LUN所在的控制器来设置目标端口组TPG的属性,为逻辑单元LUN主控制器对应的目标端口组设置更高的优先级。

利用LIO提供的ALUA机制,多控制器存储设备将目标端口按照所属控制器进行分组,划分到不同的目标端口组TPG中。TPG的数目一般由所属控制器的数目决定,例如在双控制器场景下,设置两个目标端口组。目标端口组TPG的可设置的属性包括,preferred和state。所述preferred可选值包括0和1,与所述state相互独立,并影响主机的路径选择。例如当某条路径preferred设置为0,state设置为active时,主机可能优先选择preferred为1,active为standby的路径。所述state,可选值包括活动(Active/Optimized)、非优化(Active/Nonoptimized)、待机(standby)、不可访问(unavailable)、掉线(offline)、状态转换中transitioning。

本实施例将所述LUN主控制器对应的TPG的preferred属性设置为1(优先采用主控制器对应的TPG),state属性设置为Active/Optimized。将备控制器对应的TPG的preferred属性设置为0,state属性设置为Active/Nonoptimized。主备控制器对应的type属性都设置为both(Implicit and Explicit)。

本实施例在主机端可选用Multipath的各类路径组织策略,常通过multibus策略将同一个LUN对应的多条路径组织到一个路径组中,以方便后续的路径选择算法。容易理解的是,在主机端,对于主机访问同一个LUN的多条路径,其路径分组方法多种多样,例如将优先级相同的路径组织到同一个路径组中(主控制器对应的路径为一组,备控制器对应的路径为另一组),本技术方案并不限于主机端路径组的组织策略的具体组织形式,这里不再赘述。

步骤S3、获取主机访问逻辑单元LUN的路径的状态,建立增强学习算法模型,并根据增强学习算法模型计算得到主机在下一次需要变换访问逻辑单元LUN的路径时对应的最优路径。

本技术方案利用深度增强学习算法来实现主机端多路径组件的路径选择算法,以控制I/O的下发路径,使I/O的负载均衡度达到最好,性能达到最优。本实施例在主机端,I/O通过多路径组件下发,在多路径组件中由路径选择算法来分配I/O。设计增强学习算法来规划遵循马尔科夫随机过程的I/O分发流程,以智能地最优化I/O性能。

本实施例增强学习算法模型包括三个重要的部分,动作(Action)、观察(Observation),还有反馈值(Reward)。如果一个LUN通过N条链路从存储端映射到主机端,则在主机端就相应的有N条路径可选,动作集合为从当前路径切换到其他路径的所有可能,即A={a1,a2,…,aN},一次观察代表了一种状态,状态集合为每条路径的响应时间t、路径相对吞吐量p、排队I/O大小w和请求I/O大小r的所有观测值,所有N条路径的一次观测值对应一个矩阵,如下:

反馈值对应在某种状态下执行了某种动作(切换路径)后,系统给予的反馈,可以根据反馈值判断执行该动作切换后的路径的优劣,此处定义为I/O性能指标的函数,即:

R(t,p,w,r)=α/t+β*p+δ/w+μ/r

其中α、β、δ、μ分别为可调节的权重系数,用于控制当前指标对反馈值的影响程度。

容易理解的是,权重系数的设定方式可以多种多样,例如对于不同的路径组设置不同的权重,对应于主控制器的目标端口组的路径的权重系数比较重,例如设置α1、β1、δ1、μ1为主控制器的目标端口组的路径的权重系数,设置α2、β2、δ2、μ2为备控制器的目标端口组的路径的权重系数,主控制器的权重系数大于备控制器的权重系数,这样会优先选择对应于主控制器的目标端口组的路径。

其次,还可以调整反馈值函数为如下函数:

R(t,p,w,r)=α/t+β*p+δ/w+μ/r+T

其中T表示主控制器对应路径的权重,当路径对应主控制器的目标端口组时,主控制器对应的TPG的preferred属性设置为1,T为可配置的正值,否则T为0,这样也会优先选择对应于主控制器的目标端口组的路径。

当确定了上述三项参数后,将其投入增强学习算法进行学习和训练,学得一个从状态到活动的概率π(A|S)—也称为策略,其中的最优策略使得累积奖赏最大、I/O性能的优化最多,后续用此策略来指导路径的选择。

具体的流程为,首先随机地初始化一个策略,然后评估此策略的优劣,判断此策略是否为最优策略,如果此策略足够接近最优策略,就结束。反之,则接下来进一步改进策略,再评估新的策略,循环往复,直到系统收敛。

本实施例仅在主机下一次需要变换访问逻辑单元LUN的路径时,才进行路径选择。也可以定制路径选择的时间间隔,每间隔一个时间间隔后,进行一次路径选择。即并不是每次来一个数据读写的I/O都进行一次路径选择的,以降低计算开销、占用太多CPU。路径选择一般有两个情况:1)由于异常导致的不得不选择,比如,只有两条路径,当前路径断掉了,自然要执行路径选择算法;2)在所有的路径都好的情况下,可能一条路径要写若干条I/O,才执行下一次的路径选择。

本实施例通过获取主机访问逻辑单元LUN的多条路径的状态,根据这些观测数据训练得到增强学习算法模型,模型中的策略决定主机在下一次需要变换访问逻辑单元LUN的路径时对应的最优路径。每一次的路径选择过程后,又用此次路径选择过程对应的数据来增量训练模型,更新路径选择策略,以此类推,迭代下去,直至策略达到最优、模型收敛。在实际的应用中,当进行路径选择时,先获取主机访问逻辑单元LUN的路径的状态,然后将其输入到增强学习算法模型,增强学习算法模型输出从状态到活动的概率,从而可以根据输出选择出累积奖赏最大、I/O性能的优化最多的路径来进行读写。以控制I/O的下发路径,使I/O的负载均衡度达到最好,性能达到最优。

如图3所示,与上述方法对应地,本实施例还提出了一种多控制器存储阵列读写负载均衡装置,应用于具有多个控制器的存储阵列,该多控制器存储阵列读写负载均衡装置,包括:

主控制器选择模块,用于采集存储阵列中各个控制器的基本读写信息,根据各个控制器的基本读写信息,计算得到每个控制器的决策指数,选取决策指数最优的控制器为逻辑单元LUN的主控制器;

配置模块,用于将目标端口按照所属控制器进行分组,并根据逻辑单元LUN所在的控制器来设置目标端口组TPG的属性,为逻辑单元LUN主控制器对应的目标端口组设置更高的优先级;

路径选择模块,用于获取主机访问逻辑单元LUN的路径的状态,建立增强学习算法模型,并根据增强学习算法模型计算得到主机在下一次需要变换访问逻辑单元LUN的路径时对应的最优路径。

需要说明的是,本实施例的一种多控制器存储阵列读写负载均衡装置可以集成在多控制器存储阵列中,也可以集成在主机端,或者通过网络连接主机端和多控制器存储阵列,本技术方案不限于该装置的具体实现方式,可以采用专门的设备或一台服务器来完成,这里不再赘述。

以上实施例仅用以说明本发明的技术方案而非对其进行限制,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。

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