用于存储系统的路径选择的方法和装置与流程

文档序号:12785971阅读:269来源:国知局
用于存储系统的路径选择的方法和装置与流程

本公开的实施例涉及存储系统,并且更具体地涉及用于存储系统的路径选择的方法和装置。



背景技术:

在企业级的存储解决方案中,在串行附接的小型计算机系统接口(SAS)域,多路径技术已经被广泛使用以提供路径冗余、容错、以及负载均衡。如图1所示,在后端存储应用中的一个通常的使用场景中,提供多个磁盘簇(JBOD)(101-104),其中每个JBOD中的磁盘驱动器(121-128)被经由一个或者多个扩展器(131-138)路由到不同的主机总线适配器(HBA)端口(111,112),从而具有到服务器(110)的两条路径。多路径技术被用来针对给定磁盘驱动器在两个HBA端口之间进行路径切换。

在负载均衡领域,多路径发挥着重要作用,并且对于整个系统性能来说非常关键。例如,在图1中,需要多路径模块来均衡一个磁盘驱动器的两条路径之间的工作负载。其原因详述如下。

图1所示的SAS域中的一条链路可能具有很大的存储设备容量,并导致单个HBA端口的带宽饱和。例如,对于Data DomainTM(DD)产品,能够在一个链路连接最多7个磁盘框。每个磁盘框可以具有15个磁盘,并且每个磁盘框可能达到每秒800MB的输入输出(IO)吞吐量。这意味着在最坏的情况下,一个具有2GB/s带宽的繁忙的HBA很容易变成整个系统的瓶颈,即使在同一时间另一HBA仍然有足够的带宽可以使用。

尤其是,当固态磁盘(SSD)磁盘框被引入一条链路时,情况将变得更糟。首先,SSD磁盘框产生更多的吞吐量,这将加速带宽的 饱和。其次,由于SSD和硬盘驱动器(HDD)磁盘介质的不同特性,SSD将消耗掉很多带宽,从而在SAS协议中没有有效的拥塞控制策略的情况下,这将导致与该SSD位于同一链路的HDD磁盘框的饥饿。

在本公开的实施例中,提供了方法和装置,用于提供存储系统中有效的路径选择和负载均衡。



技术实现要素:

本公开的实施例提出了用于存储系统中的路径选择的方法和装置。下面给出了对各实施例的简要概述,以提供对各种实施例的一些方面的基本理解。该概述不旨在标识关键元素的要点或描述各种实施例的范围。其唯一目的在于以简化形式呈现一些概念,作为对后述更具体描述的前序。

本公开的第一方面提供了一种用于存储系统的方法,该存储系统包括多个存储设备,并且每个存储设备经由多条路径分别被连接到服务器的多个不同HBA端口,该方法包括:监测所述存储系统的系统级的性能度量,以获得动态性能统计;基于所述动态性能统计,检测与性能相关的事件;以及基于所述动态性能统计和所述检测的结果,从多条路径中选择用于所述多个存储设备中的至少一个存储设备的活动路径。

在一个实施例中,监测该存储系统的系统级的性能度量可以包括:监测所述多个不同HBA端口处的性能度量。在另一实施例中,多个不同HBA端口处的性能度量包括吞吐量、延时和资源使用状况中的至少一项。在又一实施例中,监测该存储系统的系统级的性能度量还可以包括监测以下中的至少一项:所述多个存储设备的本地性能度量,以及多条路径的本地性能度量。

在一个实施例中,与性能相关的事件可以包括以下中的至少一项:所述多个不同HBA端口中的一个HBA端口处的性能瓶颈;所述多个不同HBA端口的性能的失衡;以及所述多个存储设备中至少 一个存储设备的性能低于阈值。

在另一实施例中,基于所述动态性能统计和所述检测的结果,从多条路径中选择用于所述多个存储设备中的至少一个存储设备的活动路径可以包括:基于检测结果和所述动态性能统计,将所述多个存储设备划分成与所述多个不同HBA端口分别对应的多个子集,以及将每个子集的存储设备路由到其对应HBA端口。

在又一实施例中,基于所述动态性能统计和所述检测的结果,从多条路径中选择用于所述多个存储设备中的至少一个存储设备的活动路径可以包括:在检测到所述多个不同HBA端口中的第一HBA端口处的性能瓶颈或者工作量过大时,针对所述多个存储设备中的至少一个存储设备进行动态路径选择,以将经由所述第一HBA端口的至少一部分工作量重新路由到所述多个HBA端口中的另一HBA端口。在一个实施例中,针对所述多个存储设备中的至少一个存储设备进行动态路径选择,以将经由所述第一HBA端口的至少一部分工作量重新路由到所述多个HBA端口中的另一HBA端口可以包括:计算需要从所述第一HBA端口卸载的期望工作量;基于所述计算,从所述多个存储设备中选择一组存储设备,并且将所述一组存储设备的活动路径切换到经由所述第一HBA端口之外的另一HBA端口的路径。在另一实施例中,计算需要从所述第一HBA端口卸载的期望工作量可以包括:至少基于所述第一HBA端口的性能度量和预定阈值来计算需要卸载的所述期望工作量。在又一实施例中,基于所述计算,从所述多个存储设备中选择一组存储设备可以包括:从所述多个存储设备中选择一组存储设备,使得所述一组存储设备的当前性能度量之和与所计算的所述期望工作量匹配。在另一实施例中,基于所述计算,从所述多个存储设备中选择一组存储设备包括:从所述多个存储设备中选择多组存储设备,使得所述多组存储设备中的每一组存储设备的当前性能度量之和与所计算的所述期望工作量匹配;以及根据预定准则从所述多组存储设备中选择一组存储设备。在进一步的实施例中,根据预定准则从所述多组存储设备中选择一 组存储设备包括:从所述多组存储设备中选择优先级权重之和最大的一组存储设备。

在一个实施例中,该方法可以包括:监测所述存储系统的拓扑更新;并且基于检测结果和所述动态性能统计,从多条路径中选择用于所述多个存储设备中的至少一个存储设备的活动路径可以包括:在监测到拓扑更新事件而没有检测到性能相关事件时,按照第一路径选择策略选择用于所述多个存储设备中的至少一个存储设备的活动路径;以及在检测到性能相关事件时,按照第二路径选择策略选择用于所述多个存储设备中的至少一个存储设备的活动路径。在另一实施例中,第一路径选择策略为缺省的静态路径选择策略,并且/或者,所述第二路径选择策略为动态路径选择策略。在又一实施例中,在监测到拓扑更新事件而没有检测到性能相关事件时,按照第一路径选择策略选择用于所述多个存储设备中的至少一个存储设备的活动路径可以包括:在监测到拓扑更新事件而没有检测到性能相关事件时,验证更新后的拓扑的有效性,以及在更新后的拓扑有效时,按照第一路径选择策略选择用于所述多个存储设备中的至少一个存储设备的活动路径。

在另一实施例中,基于所述动态性能统计和所述检测的结果,从多条路径中选择用于所述多个存储设备中的至少一个存储设备的活动路径还可以包括:基于所述检测的结果、所述动态性能统计以及路径的优先级,从多条路径中选择用于所述多个存储设备中的至少一个存储设备的活动路径。

在一个实施例中,该方法可以进一步包括:根据所述选择结果,对路径的状态和路径的优先级中的至少一项进行更新。

在另一实施例中,该方法可以进一步包括:迭代地执行所述监测、检测和选择,直到达到期望的性能目标。

本公开的第二方面提供了一种用于存储系统的装置,该存储系统包括多个存储设备,并且每个存储设备经由多条路径分别被连接到服务器的多个不同HBA端口,所述装置包括:性能监测器,被配 置为监测所述存储系统的系统级的性能度量,以获得动态性能统计;事件检测器,被配置为基于所述动态性能统计,检测与性能相关的事件;以及路径选择器,被配置为基于所述动态性能统计和所述检测的结果,从多条路径中选择用于所述多个存储设备中的至少一个存储设备的活动路径。

在一个实施例中,性能监测器可以包括:HBA端口性能监测器,被配置为通过监测所述多个不同HBA端口处的性能度量来监测所述存储系统的系统级的性能度量。在另一实施例中,所述多个不同HBA端口处的性能度量包括吞吐量、延时和资源使用状况中的至少一项。在又一实施例中,性能监测器还可以包括本地性能监测器,其被配置为监测以下中的至少一项:所述多个存储设备的本地性能度量;以及多条路径的本地性能度量。

在一个实施例中,与性能相关的事件可以包括以下中的至少一项:所述多个不同HBA端口中的一个HBA端口处的性能瓶颈;所述多个不同HBA端口的性能的失衡;以及所述多个存储设备中至少一个存储设备的性能低于阈值。

在另一实施例中,路径选择器可以被配置为通过以下方式从所述多条路径中选择用于所述多个存储设备中的至少一个存储设备的活动路径:基于所述检测的结果和所述动态性能统计,将所述多个存储设备划分成与所述多个不同HBA端口分别对应的多个子集,以及将每个子集的存储设备路由到其对应HBA端口。

在一个实施例中,路径选择器可以进一步包括:负载均衡器,被配置为在检测到所述多个不同HBA端口中的第一HBA端口处的性能瓶颈或者工作量过大时,将经由所述第一HBA端口的至少一部分工作量重新路由到所述多个HBA端口中的另一HBA端口。在另一实施例中,负载均衡器可以进一步包括:卸载工作量计算器,被配置为在检测到所述多个不同HBA端口中的第一HBA端口处的性能瓶颈或者工作量过大时,计算需要从所述第一HBA端口卸载的期望工作量;存储设备选择器,被配置为基于所述计算,从所述多个 存储设备中选择一组存储设备,以及路径切换器,被配置为将所述一组存储设备的活动路径切换到经由所述第一HBA端口之外的另一HBA端口的路径。在进一步的实施例中,卸载工作量计算器可以进一步被配置为至少基于所述第一HBA端口的性能度量和预定阈值来计算需要卸载的所述期望工作量。在另一实施例中,存储设备选择器可以进一步被配置为:基于所述计算从所述多个存储设备中选择一组存储设备,使得所述一组存储设备的当前性能度量之和与所计算的所述期望工作量匹配。在一个实施例中,存储设备选择器可以进一步被配置为:从所述多个存储设备中选择多组存储设备,使得所述多组存储设备中的每一组存储设备的当前性能度量之和与所计算的所述期望工作量匹配;以及根据预定准则从所述多组存储设备中选择一组存储设备。在另一实施例中,根据预定准则从所述多组存储设备中选择一组存储设备包括:从所述多组存储设备中选择优先级权重之和最大的一组存储设备。

在一个实施例中,该装置还可以包括拓扑检测器,被配置为监测所述存储系统的拓扑更新;并且路径选择器可以进一步包括决策模块,被配置为在监测到拓扑更新事件而没有检测到性能相关事件时,按照第一路径选择策略选择用于所述多个存储设备中的至少一个存储设备的活动路径,以及在检测到性能相关事件时,按照第二路径选择策略选择用于所述多个存储设备中的至少一个存储设备的活动路径。在另一实施例中,该第一路径选择策略可以是缺省的静态路径选择策略,并且/或者,该第二路径选择策略可以是动态路径选择策略。在又一实施例中,该装置还可以包括拓扑验证器,被配置为在监测到拓扑更新事件时,验证更新后的拓扑的有效性,并且决策模块可以被配置为被配置为在更新后的拓扑有效并且没有检测到性能相关事件时,按照第一路径选择策略选择用于所述多个存储设备中的至少一个存储设备的活动路径。

在一个实施例中,路径选择器可以进一步被配置为:基于所述检测的结果、所述动态性能统计以及路径的优先级,从多条路径中 选择用于所述多个存储设备中的至少一个存储设备的活动路径。

在另一实施例中,该装置可以进一步包括多路径模块,被配置为根据所述选择结果,对路径的状态和路径的优先级中的至少一项进行更新。

在又一实施例中,该装置可以进一步包括性能调整器,被配置为促使所述性能监测器、所述事件检测器和所述路径选择器迭代地执行所述监测、检测和选择操作,直到达到期望的性能目标。

本公开的第三方面提供了一种装置,该装置包括至少一个处理器;以及包括计算机程序代码的至少一个存储器,其中所述至少一个存储器和所述计算机程序代码被配置为:与所述至少一个处理器一起,促使所述装置执行根据本公开的第一方面的方法。

根据本公开的实施例的方法或装置,能够避免或者及时消除性能瓶颈,获得负载均衡,并使得系统资源被更加有效的利用。

尽管在附图中通过示例的方式示出了特定的实施例,然而,应当理解,本文的具体实施例的描述不意在将实施例限制为所公开的具体形式。

附图说明

从下文的公开内容和权利要求中,本公开的目的、优点和其他特征将变得更加明显。这里仅出于示例的目的,参考附图来给出优选实施例的非限制性描述,在附图中:

图1示出了双SAS域拓扑的示意图;

图2a-b示出了根据本公开的实施例的方法的流程图;

图3示出了根据本公开的实施例的装置的示例性结构图;以及

图4示出了根据本公开的实施例的另一装置的操作示意图。

具体实施方式

在以下描述中,出于说明的目的而阐述许多细节。然而,本领域普通技术人员将认识到可以在不使用这些具体细节的情况下实现 本公开的实施例。因此,本公开不旨在于受限于所示实施例、而是将被赋予与本文描述的原理和特征一致的最宽的范围。

应当理解,术语“第一”、“第二”等仅被用来将一个元素与另一个元素区分开来。而实际上第一元素也能够被称为第二元素,反之亦然。另外还应当理解“包括”,“包含”仅被用来说明所陈述的特征、元素、功能或者部件的存在,然而并不排除存在一个或者多个其他的特征、元素、功能或者部件。

如上所述,在存储系统中需要多路径技术来实现负载均衡。针对负载不均衡和性能瓶颈问题,现有的多路径方法尝试提出不同的解决方案,然而由于各种不同的原因,这些现有的解决方案并不能够很好地工作。这些解决方案包括:

1.静态路径选择配置

这解决方案允许针对每个磁盘手动地配置活动路径。该方法没有将动态性能改变纳入考虑,并且完全依赖于工程师的经验来进行路径选择。

2.基于跳的路径选择

该解决方案假定从磁盘到HBA端口的跳数与磁盘的延时和性能密切关联。该方法在很多情况下工作良好,然而较小的跳数并不必然地对应于较高的性能。对于DD系统的某些特定类型的磁盘框,已经发现性能问题。另外,该方法同样是静态的路径选择,因此,缺少灵活性和可扩展性。

3.dm-多路径(dm-multipath)实施的路径选择器

该解决方案由开源设备映射器多路径目标使用。例如,在Linux3.2中,有3种路径选择器:轮询(round-robin)、队列长度(queue-length)和服务时间(service-time)。与前两种方法不同,这些路径选择器(尤其是3种中的后两种)具有利用路径度量有效处理动态性能变化的能力。但是仍然具有各自的缺陷。

例如,这些方案仅基于通过跟踪给定磁盘的一批IO而收集到的本地度量来决定路径选择。因此,缺少系统级的知识,诸如关于在 给定时间HBA端口是否严重繁忙的信息。

这类路径选择器仅以细粒度调整的方式进行工作,这需要频繁地切换路径。然而,这种频繁地路径切换可能导致串行高级技术附接(SATA)磁盘性能恶化。因为与SAS盘不同,SATA驱动器初始地并未被设计为同时支持多启动器(initiator)(例如图1中的多个HBA111和112)。尽管能够通过添加接口转换器来模拟双端口,但是在不同路径间切换时,其性能并不如其在单端口连接情况下那样好,因为其内部设计并没有针对路径切换进行优化。

为了解决以上问题中的至少一些问题,本公开的实施例提出了用于存储系统中的路径选择的方法和装置。

图2a中示出了方法200的示例性流程图。该方法应用于的存储系统包多个存储设备,并且每个存储设备经由多条路径被连接到服务器的多个不同HBA端口。例如该存储系统可以是如图1所示的结构,并且存储设备可以是图1中所示的磁盘(121-128)。但是如本领域技术人员能够理解的,该方法也可以应用于其它的存储系统。

如图2a所示,方法200包括:在块S201,监测所述存储系统的系统级的性能度量,以获得动态性能统计;在块S202,基于所述动态性能统计,检测与性能相关的事件;在块S203,基于检测结果和所述动态性能统计,从多条路径中选择用于所述多个存储设备中的至少一个存储设备的活动路径。

使用该方法,能够利用系统级的性能度量来进行路径选择,以避免或者及时地检测到性能瓶颈并进行处理;另外能够有效地自适应于性能的动态改变,使系统资源更有效使用。

在一些实施例中,在块S201,能够通过监测多个不同端口处的性能度量来监测存储系统的系统级的性能度量。该端口可以是,但不限于,HBA端口(例如图1中的HBA 111,112)。如本领域技术人员能够理解的,根据存储结构和技术的不同,并且随着技术的发展,该HBA端口也可以被其他端口所取代,因此,本公开的实施例并不限于HBA端口。在另一实施例中,HBA端口处的性能度量可 以包括,但不限于,吞吐量、延时和资源使用状况中的至少一项。在又一实施例中,在块S201,还可以监测以下中的至少一项:所述多个存储设备的本地性能度量;以及多条路径的本地性能度量。在该实施例中,能够同时利用系统级的性能度量和特定存储设备和/或路径的本地度量的动态统计来进行路径选择。

在一个实施例中,在块S202,根据动态性能统计而检测的与性能相关的事件可以包括,但不限于,多个不同HBA端口中的一个HBA端口(例如图1中的HBA 1,111)处的性能瓶颈、和/或多个不同HBA端口的性能的失衡、和/或多个存储设备中至少一个存储设备的性能低于阈值。这些事件可以触发动态路径选择。

在一个实施例中,基于块S202中的检测结果以及块S201中获得的动态性能统计,在块S203,可以将多个存储设备划分成与多个不同HBA端口分别对应的多个子集,以及将每个子集的存储设备路由到其对应HBA端口。子集的具体划分可以根据检测结果以及块S201中获得的动态性能统计而定。例如,对于统计显示为高负载的HBA端口,可以使其对应负载较小的存储设备的子集。这使得能够均衡各个HBA端口的工作量,避免或者解决负载的失衡。

在另一实施例中,在块S203,如果检测到多个不同HBA端口中的第一HBA端口处的性能瓶颈或者工作量过大时,可以针对多个存储设备中的至少一个存储设备进行动态路径选择,以将经由所述第一HBA端口的至少一部分工作量重新路由到所述多个HBA端口中的另一HBA端口。如本领域技术人员能够理解的,该第一HBA端口可以是多个不同HBA端口中的任一HBA端口。例如,在检测到经由图1中的HBA 1(111)的负载过高,以致称为整个存储系统的瓶颈时,可以将经由该HBA端口的一些存储设备重新路由到HBA 2端口(112),即,针对这些存储设备,将经由HBA2的路径选为活动路径。

本公开的实施例并不限于在块S203以任何具体的方式来进行存储设备的重新路由。以下仅作为示例给出一种实施方式。如图2b所 示,在该示例中,如果检测到第一HBA端口(例如图1中的HBA 1,111)处的性能瓶颈或者工作量过大,可以在S2031首先计算需要从该第一HBA端口卸载的期望工作量;然后在S2032,基于该计算,从多个存储设备中选择一组存储设备,并且,在S2033,将所选的一组存储设备的活动路径切换到经由第一HBA端口之外的另一HBA端口(例如图1中的HBA 2,112)的路径。

在一个实施例中,在S2031,可以至少基于第一HBA端口的性能度量和预定阈值来计算需要卸载的所述期望工作量。例如可以将第一HBA端口的性能度量的当前统计结果与预定阈值进行比较来获得超出该预定阈值的量(即,与预定阈值的差值),作为需要卸载的期望工作量。在另一实施例中,也可以将大于差值的量作为需要卸载的期望工作量。

在一个实施例中,可以将HBA端口的带宽认为是系统资源的限制。因此,可以将阈值设定为逼近HBA端口的带宽的值。如果HBA端口的吞吐量已经逼近HBA端口的带宽,则将造成整个系统的瓶颈。从这一点来说,期望被卸载的工作量指示有多少工作量应当从繁忙的HBA端口(例如HBA 1)被重新路由到空闲的HBA端口(例如HBA 2)。该期望工作量与性能统计和阈值密切相关,或者与HBA端口带宽、性能统计和阈值密切相关。例如,在块S2031中计算的期望工作量可以通过以下函数描述:

E=f(带宽,阈值,性能) (1)

尽管该示例中我们仅着重于带宽,并且获得期望卸载的工作量的值(E)。然而根据需要,上述公式也能够被应用于其他性能度量,例如每秒IO数(IOPS)、时延等。

在一个实施例中,基于S2031中的计算,在S2032,可以从所述多个存储设备中选择一组存储设备,使得该一组存储设备的当前性能度量之和与所计算的期望工作量匹配。例如,可以采用,但不限于仅采用,以下算法来进行子集的选择:利用一个存储设备(例如磁盘驱动器)的当前的性能统计,估计其在较近的未来的吞吐量, 并且使存储设备子集中的总吞吐量与在S2031中计算得到的需要卸载的期望工作量的基本一致。也就是说,通过将该一组存储设备理由到其他HBA端口,则期望卸载的工作量能够被卸载。如本领域技术人员能够理解的,在以上操作中所使用的存储设备的性能度量并不限于吞吐量,还可以是,例如占用的带宽、数据量等。

在另一实施例中,在S2032,还可以从多个存储设备中选择多组存储设备,使得该多组存储设备中的每一组存储设备的当前性能度量之和与所计算的所述期望工作量匹配;以及根据预定准则从所述多组存储设备中选择一组存储设备。在进一步的实施例中,根据预定准则从所述多组存储设备中选择一组存储设备可以包括:从多组存储设备中选择优先级权重之和最大的一组存储设备。

在一个示例中,每个存储设备的权重可以表示配置的优先级。相应的,可以将这种选择定义为经典的0-1背包算法问题。形式上,该选择可以被描述为:

以和x∈{0,1}为条件,

使最大化。

其中pj表示一个存储设备的当前性能统计。wj指示一个存储设备的优先级权重,其可以是用户配置的权重(例如从磁盘到HBA的跳数)、或者是通过其它统计操作获得的动态权重。xj表示0-1变量,其决定了驱动器j是否属于该子集。例如,取值为1表示属于该子集,取值为0则表示不属于该子集。

如本领域技术人员能够理解的,从多组中选择一组存储设备也可以根据其他的预定准则进行。例如,可以选择其中具有最少数目的存储设备的一组,或者,选择其中平均性能最差的一组等。因此,本公开的实施例并不限于通过任何特定的准则进行选择。

在一个实施例中,方法200还包括:在块S204,监测所述存储系统的拓扑更新;并且块S203可以包括:在监测到拓扑更新事件而 没有检测到性能相关事件时,按照第一路径选择策略选择用于所述多个存储设备中的至少一个存储设备的活动路径;以及在检测到性能相关事件时,按照第二路径选择策略选择用于所述多个存储设备中的至少一个存储设备的活动路径。

利用该实施例,能够监测拓扑变化和性能统计,并且根据不同的事件进行相应的处理。在一个实施例中,第一路径选择策略可以是缺省的静态路径选择策略,并且/或者,所述第二路径选择策略为动态路径选择策略。例如,对于拓扑更新事件,可以使用基于跳数的路径选择方法或者针对某些特定的平台引入用于SSD链路的基于实验结果的静态映射路径选择方法;而对于与性能相关的事件时,其可以使用动态路径选择器。

在进一步的实施例中,在监测到拓扑更新事件而没有检测到性能相关事件时,还可以在S204验证更新后的拓扑的有效性,以及在更新后的拓扑有效时,可以在块S203,按照第一路径选择策略选择用于所述多个存储设备中的至少一个存储设备的活动路径。

在一个实施例中,路径可以具有优先级,并且在块S203中,可以基于检测结果、动态性能统计、以及路径的优先级来从多条路径中选择用于多个存储设备中的至少一个存储设备的活动路径。

该路径优先级可以是预先配置的,或者是动态更新的。例如,在一个实施例中,方法200还可以包括,在块S205,根据块S203中的选择结果,更新路径的状态和/或路径的优先级。更新的结果可以被用于后续的路径选择。

在另一实施例中,块S201-S203中的监测、检测和选择可以迭代进行,直到达到期望的性能目标。例如,在S203中进行活动路径选择之后,开始继续在S201中监测性能度量,并在S203中调整选择结果。例如,如果S201中监测结果显示已经实现了期望的性能目标(例如,被路由到繁忙的HBA的吞吐量已经低于阈值),则结束该路径选择过程;否则继续监测和调整。

以下参考附图3描述用于存储系统中的路径选择的装置300的 结构。装置300所适用的存储系统包括多个存储设备(例如图1中的121-128),并且每个存储设备经由多条路径被连接到服务器(例如图1中的110)的多个不同端口(例如图1中的HBA端口111和112)。例如该存储系统可以是(但是并不限于)如图1所示。装置300可以执行参考图2所述的方法200,但是不限于执行该方法200。同样该方法200可以由装置300执行,但是不限于由装置300执行。例如方法200的至少一些操作可以由其它的装置来执行。

在一个实施例中,该装置300包括性能监测器301,被配置为监测所述存储系统的系统级的性能度量,以获得动态性能统计;事件检测器302,被配置为基于所述动态性能统计,检测与性能相关的事件;以及路径选择器303,被配置为基于检测结果和所述动态性能统计,从多条路径中选择用于所述多个存储设备中的至少一个存储设备的活动路径。

在一个实施例中,单元301-303可以被配置为执行参考图2所述的方法200的步骤S201-S203。因此,参考方法200进行的相关描述在此同样适用。

在一个实施例中,性能监测器301可以包括端口性能监测器3011,被配置为通过监测所述多个不同HBA端口处的性能度量来监测所述存储系统的系统级的性能度量。在一个示例实施例中,多个不同HBA端口处的性能度量可以包括,但不限于,吞吐量、延时和资源使用状况中的至少一项。

在另一实施例中,性能监测器301还可以包括本地性能监测器3012,被配置为监测多个存储设备的本地性能度量,和/或多条路径的本地性能度量。

在一个实施例中,事件检测器302所检测的与性能相关的事件可以包括:多个不同HBA端口中的一个HBA端口处的性能瓶颈、和/或多个不同HBA端口的性能的失衡、和/或多个存储设备中至少一个存储设备的性能低于阈值。

路径选择器303可以以多种方式、至少基于系统级的动态性能 统计进行存储设备的路径选择。仅作为示例,路径选择器303可以基于检测结果和动态性能统计,将多个存储设备划分成与多个不同HBA端口分别对应的多个子集,以及将每个子集的存储设备路由到其对应HBA端口。

替代的或者附加的,路径选择器303可以包括:负载均衡器3031,被配置为在检测到所述多个不同HBA端口中的第一HBA端口处的性能瓶颈或者工作量过大时,将经由所述第一HBA端口的至少一部分工作量重新路由到所述多个HBA端口中的另一HBA端口。

在一个实施例中,负载均衡器3031可以进一步包括卸载工作量计算器30311,被配置为在检测到所述多个不同HBA端口中的第一HBA端口处的性能瓶颈或者工作量过大时,计算需要从所述第一HBA端口卸载的期望工作量;存储设备选择器30312,被配置为基于所述计算,从所述多个存储设备中选择一组存储设备,以及路径切换器30313,被配置为将所述一组存储设备的活动路径切换到经由所述第一HBA端口之外的另一HBA端口的路径。

在一个实施例中,卸载工作量计算器30311可以被配置为至少基于所述第一HBA端口的性能度量和预定阈值来计算需要卸载的所述期望工作量。例如通过将第一HBA端口的性能度量和预定阈值进行比较来获得期望工作量。

在另一实施例中,存储设备选择器30312可以进一步被配置为:基于所述计算从所述多个存储设备中选择一组存储设备,使得所述一组存储设备的当前性能度量之和与所计算的所述期望工作量匹配。在又一实施例中,存储设备选择器也可以被配置为从所述多个存储设备中选择多组存储设备,使得所述多组存储设备中的每一组存储设备的当前性能度量之和与所计算的所述期望工作量匹配;以及根据预定准则从所述多组存储设备中选择一组存储设备。如本领域技术人员能够理解的,本公开的实施例不限于根据任何特定的预定的准则从多组存储设备中选择一组存储设备。仅作为示例,这可以包括从所述多组存储设备中选择优先级权重之和最大的一组存储 设备。在其它的实施例中,也可以根据每组存储设备中的数目、平均性能等进行选择。

在一个实施例中,替代地或者附加地,装置300可以包括拓扑监测器304,被配置为监测所述存储系统的拓扑更新;并且路径选择器303可以进一步包括:决策模块3032,被配置为在监测到拓扑更新事件而没有检测到性能相关事件时,按照第一路径选择策略选择用于所述多个存储设备中的至少一个存储设备的活动路径,以及在检测到性能相关事件时,按照第二路径选择策略选择用于所述多个存储设备中的至少一个存储设备的活动路径。在一个实施例中,第一路径选择策略可以是缺省的静态路径选择策略,并且/或者,第二路径选择策略可以是动态路径选择策略。

在另一实施例中,装置还可以包括拓扑验证器305,被配置为在监测到拓扑更新事件时,验证更新后的拓扑的有效性,并且决策模块3032可以被配置为在更新后的拓扑有效、并且没有检测到性能相关事件时,按照第一路径选择策略选择用于所述多个存储设备中的至少一个存储设备的活动路径。

在一些实施例中,路径选择器303可以被配置为还基于检测结果和动态性能统计之外的其它参数,例如路径的优先级,来从多条路径中选择用于多个存储设备中的至少一个存储设备的活动路径。

在另一实施例中,装置300还可以进一步包括多路径模块306,被配置为根据路径选择器303的选择结果,更新路径的状态和/或路径的优先级。

在一个实施例中,装置300还可以进一步包括性能调整器307,被配置为促使性能监测器301、事件检测器302和路径选择器303迭代地执行监测、检测和选择操作,直到达到期望的性能目标。

如本领域技术人员能够理解的,装置300还可以包括图3中未示出的其它单元;并且在一些实施例中,图3中的某些单元可以被省略。并且,在一些实施例中,由图3中一个单元进行的操作也可以分不到多个单元中执行;类似的,在另一些实施例中,在图3中 由多个单元进行的操作也可以由单个部件实现。

在图4中示出了通过根据本公开的实施例的另一装置400迭代地进行路径选择的示意图。装置400包括性能监测器401、路径选择器框架402(其中包括自适应的路径选择器4021)、拓扑监测器403、和多路径核心模块404。其背后的基本想法是:监测性能度量,不仅包括本地路径状态,还包括系统级的资源使用。利用这些动态统计,可以及时地检测到性能的瓶颈,并且向决策模块通知。然后路径选择器框架402中的决策模块(4023)可以进一步分析性能度量、系统资源使用和系统拓扑。在此之后,其将给出路径选择建议,用于进行路径选择(422)以获得工作量均衡。多路径核心模块将最终提供路径选择机制以支持以上策略。

图4中的装置400的各个部件的功能可以被总结如下:

性能监测器401的功能类似于图3中的性能监测器301,其可以收集存储设备(例如磁盘驱动器)和端口(例如HBA端口)的性能度量,例如可以分别由图4中的驱动器性能模块4011和端口性能模块4012来执行该监测。当检测到系统级的瓶颈时,其中的性能警告模块4013可以通过发送系统级的性能事件来通知路径选择框架402。

如图4所示,拓扑监测器403可以包括4个子部件:设备热拔插事件(Uevent)处理单元4031、拓扑获取单元4032、拓扑验证单元4033、和拓扑更新通知单元4034。其可以实施图3中的拓扑监测器304和拓扑验证器305的功能。

其中,Uevent处理单元4031被配置为集中于Uevent收集和分析,Uevent是指示与拓扑变化有关的事件,例如磁盘数量的改变。当拓扑改变稳定时,Uevent处理单元4031可以调用拓扑验证单元4033。

拓扑获取单元4032,被配置为维护拓扑信息,用于由其他部件访问。例如,路径选择器框架402可以使用该信息。拓扑验证单元4033将检查拓扑是否有效。拓扑是否有效是由更新后的拓扑是否符 合产品的要求和配置来决定的。例如,如果无效的拓扑存在,则可以认为进行路径选择是无意义的。拓扑更新通知单元4034被配置为将通过发送拓扑改变事件来唤醒路径选择框架402。

多路径核心模块404能够检测路径状态和统计(4041),例如可以执行图3中的本地性能监测器3012中的至少一部分功能。当其检测到一条路径上的本地瓶颈时,将通过发送本地性能事件来通知路径选择框架402。其还可以提供显示/存储sysfs接口(4042),以支持路径选择框架402改变路径优先级。

路径选择框架402在该示例中主要包括三个功能部分:事件检测4021、信息高速缓存4022、以及决策模块4023。各部分的具体功能直接如下,并且各部分的功能又可以由子模块来完成:

事件检测4021:被配置为接收事件并对其分类(420)。其可能接收到多种类型的事件,并且仅将与性能相关的事件调度到决策模块4023中的动态路径选择器。拓扑事件指示拓扑改变,其可能由配置的静态路径选择器进行处理(424)。

信息高速缓存4022:被配置为维护与性能和拓扑有关的信息。不同的信息可以分别由不同的子模块来维护,如图4所示。例如驱动器性能模块411维护与驱动器性能有关的信息;端口性能模块412维护与HBA端口性能有关的信息;路径性能模块413维护与路径性能有关的信息;拓扑模块414维护与拓扑有关的信息。核心决策模块4023能够通过调用信息高速缓存接口来访问它们。

决策模块4023可以被配置为执行图3中的决策模块3032的至少一部分功能。例如,事件检测4021单元唤醒决策模块4023,并且然后核心决策逻辑启动。其可以包括动态路径选择器421,其在自适应路径选择算法中发挥核心作用。其可以执行以上参照图2所述的块S203的功能或者参照图3所述的路径选择单元303的全部或者一部分功能。

另外,如图4所示,装置400个各部分可以通信,以根据路径选择的结果更新统计,监测性能调整(423)促使迭代地执行事件检 测和路径选择操作,直到达到期望的性能目标。达到期望后,可以进入等待状态(425)。

如本领域技术人员能够理解的,图3或者4所示仅是示例结构,本公开的实施例也可以以不同于图3或者4所示的其它结构来实施基于系统级性能的动态路径选择。例如,装置300、400还可以包括图3-4中未示出的其它单元;并且在一些实施例中,图3-4中的某些单元可以被省略。并且,在一些实施例中,由图3-4中的一个单元进行的操作也可以分布到多个单元中执行;类似的,在另一些实施例中,在图3-4中由多个单元进行的操作也可以由单个部件实现。

在本公开的实施例中,从多路径侧,针对负载均衡问题设计了智能的路径选择解决方案。其可以由,例如,图4中的路径选择框架和其中的动态路径选择器完成。该框架检测拓扑更新和性能瓶颈,从而能够通知路径选择器来针对负载均衡进行路径选择。动态路径选择器可以利用拓扑知识、和/或本地性能统计、和/或系统级的性能统计来进行路径选择。该解决方案还可以被配置为迭代地监测性能并进行路径选择,以自适应的方式获得性能的调整。各部件一起工作以提供比现有方法更加智能和灵活的方法。

尽管在一些实施例中,本公开提出的方法和装置可以在SAS域得以应用,但是本公开的实施例不限于此,而是能够并应用于其他域,例如FC、ISCSI存储域等。

本领域技术人员将容易地认识到,各种上述各种方法中的块或者步骤可以通过编程的计算机来执行。在本公开中,一些实施例还意在涵盖程序存储系统,例如,数字数据存储介质,这是机器或计算机可读的并且编码机器可执行或计算机可执行的指令程序,其中,所述指令执行上述方法的一些或所有步骤。程序存储系统可以是,例如,数字存储器、诸如磁盘和磁带的磁存储介质、硬盘驱动器或光学可读数字数据存储介质。该实施例还意在涵盖编程为执行所述上述方法的步骤的计算机。一些实施例还意在涵盖一种装置,该装置包括至少一个处理器;以及至少一个包括计算机程序代码的存储 器,其中所述至少一个存储器和所述计算机程序代码被配置为:与所述至少一个处理器一起,促使所述装置执行方法200。

在附图中示出的装置的各种元件的功能,可以通过使用软件、专用硬件以及与适当软件相关联的能够执行软件的硬件、或者固件、或者其结合来提供。当由处理器提供时,该功能可以由单个专用处理器、由单个共享处理器或由多个单独的处理器来提供。此外,术语“处理器”可以包括但不限于,数字信号处理器(DSP)硬件、网络处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA),用于存储软件的只读存储器(ROM)、随机存取存储器(RAM)和非易失性存储装置。还可以包括其他常规和/或定制的硬件。

本领域技术人员应当理解,说明书和附图仅仅说明本公开的实施例的原理。因此,应当理解,本领域的技术人员将能够设计出各种布置,虽然这里没有明确地描述或示出,但是该布置体现本公开的实施例的原理并且被包括在本公开的实施例的精神和范围内。此外,这里阐述的所有示例主要旨在明确仅用于教学目的,以帮助读者理解本公开的实施例的原理和发明人贡献的用于促进本领域的概念,并且应被解释为不限于这些具体阐释的示例和条件。而且,这里阐述本公开的实施例的原理、方面和实施例的所有阐述及其具体示例也意在包含其等同物。

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