用于均衡融合网络中的存储数据流量的方法和系统与流程

文档序号:14394562阅读:342来源:国知局

本发明涉及耦合至网络的计算设备访问经由适配器耦合至所述网络的存储设备的方法和系统,并且涉及用于实现这种方法和系统的设备。在一些实施例中,本发明涉及均衡(例如,以试图优化)系统中的存储数据流量,在所述系统中,耦合至网络的计算设备(服务器)进行操作以访问同样通过适配器耦合至所述网络的存储设备。



背景技术:

过去,数据中心通常实现两种完全分离的网络基础设施:数据通信网络(通常基于以太网)以及用于存储设备访问的单独“存储”网络。典型的存储网络实施常规的光纤通道(fibrechannel)协议。在存储网络被配置且被用于主要承载“存储数据”流量(其中,“存储数据”表示从至少一个存储设备中检索的或待存储于所述至少一个存储设备上的数据)并且数据网络被配置且被用于主要承载其他数据流量(即,不是存储数据的数据)的意义上,表述“数据通信网络”和“数据网络”在本文中作为同义词而用于表示类别与“存储网络”类别不同的网络。

然而,不期望的是,实现多种网络类型(例如,单独的数据和存储网络)增大了运营数据中心的资金和操作成本。

最近,许多数据中心已经开始对承载存储数据流量和其他(非存储数据)流量的单一网络的使用进行调查(并且一些已经开始使用所述单一网络)。这种单一网络在本文中将被称为“融合网络(convergednetwork)”。融合网络的示例是基于以太网的网络,在所述基于以太网的网络上,所有流量都在耦合至网络的服务器与(经由适配器)耦合至网络的存储设备之间发送。不幸的是,待通过融合网络发送的这两种类型的网络流量(存储数据流量和其他数据流量)具有不同的特性。

为了承载除了存储数据流量之外的流量,数据网络(例如,使用互联网协议来实施以太网的数据网络)可以(并且因此通常)被实施为非托管或最低限度托管网络。这使得来往于数据网络添加和移除计算机和其他硬件变得简单。例如,dhcp协议通常可以(在没有人为干预的情况下)向新设备提供所述新设备在数据网络上进行操作所需要的所有信息。

然而,网络环路可能在数据网络中引起严重的问题(即,对应当丢弃的分组的连续转发)。为此,数据网络经常实施某种协议(例如,生成树协议(spanningtreeprotocol))以便确保在数据网络上的任何两个设备之间只有一条路径是已知的。在数据网络上很少明确地建立冗余数据路径。进一步地,数据网络上的流量是相对不可预测的,并且经常对应用进行写入以便容许在数据网络上可获得任何带宽。

相比而言,存储网络通常是托管网络。网络管理员通常手动分配什么计算机可以与存储网络上的哪些存储设备通信(即,通常不存在自配置)。在使(被实现为与数据网络分离的存储网络中的)网络连接自适应于变化的条件方面存在很少的进展。进一步地,为了提供低级数据存储通常需要的高可用性和容错水平,在(耦合至存储网络的)存储设备与计算机之间通常存在完全冗余的路径。

由于存储网络(及其存储数据流量)与数据网络(及其非存储数据流量)之间的差异,将存储数据流量和其他流量两者组合在融合网络中可能导致网络利用不均衡,这可能降低数据中心中的应用的整体性能。本发明的典型实施例解决了融合网络的这种利用不均衡例如以便允许数据中心的应用接近可获得的最大性能。

以下定义在整个本说明书中适用,包括权利要求书中:

“存储设备”表示被配置用于存储和检索数据的设备(例如,磁盘驱动器)。通常,使用逻辑块地址(lba)和多个块来访问存储设备。逻辑块是总存储容量的固定大小区块(例如,512或4096字节)。传统的旋转磁盘驱动器是存储设备的示例;

“服务器”表示被配置用于跨网络(融合网络)访问和使用存储设备以便存储和检索数据(例如,文件和/或应用)的计算设备;

“适配器”表示被配置用于将存储设备或包括两个或更多个存储设备的存储系统(例如,jbod)连接至网络(例如,融合网络)的设备。在本发明的典型实施例中,每个存储设备通常都可由服务器经由两个或更多个适配器访问,以便提供对存储于存储设备上的数据的容错访问;

“接口”表示服务器或适配器的将设备(服务器或适配器)连接至网络(例如,融合网络)的部件。接口的示例是物理设备(即,网络接口控制器(nic))以及多个nic的软件定义封装器(关于链路聚合)。在本发明的典型实施例中,接口是在融合网络中具有其自己的互联网协议(ip)地址的硬件或软件元件;

“代理”表示服务器(或适配器)的被配置成在服务器(或适配器)的操作期间在服务器(或适配器)上运行以便交换(或准备交换)网络(例如,融合网络)上的存储数据流量的软件或硬件部件或子系统。在本发明的一些实施例中,不是融合网络上的所有服务器和适配器都具有代理。然而,将非参与服务器和/或适配器(不具有代理的服务器和/或适配器)耦合至网络可能限制可以(根据本发明的实施例)实现的均衡程度;并且

“数据路径”表示使用适配器和服务器中的每一个上的一个接口经由适配器在存储设备与服务器之间发送数据的路径(即,从存储设备通过适配器接口并且通过服务器接口到达服务器的路径,或者从服务器通过服务器接口和适配器接口到达存储设备的路径)。在ip网络中,数据路径通常可以通过服务器接口的ip地址和适配器接口的ip地址的组合来表示,并且可选地,还通过将在适配器处使用的端口号来表示。然而,在链路聚合的情况下,完整路径将取决于绑定到一个ip地址中的接口组内用于所述路径的实际接口。

当包括两个或更多个存储设备的存储系统(例如,jbod)耦合至适配器并且适配器和服务器两者都耦合至融合网络时,我们设想服务器(为了访问存储系统的存储设备)将通常指定(即,被配置用于使用)存储系统的特定存储设备(例如,jbod的一个磁盘驱动器)以及服务器与存储设备之间的数据路径。根据本发明的典型实施例,数据路径可以不时改变以便均衡网络上的存储数据流量。根据本发明的一些实施例,(服务器与存储系统之间的)数据路径可以不时改变以便均衡网络上的存储数据流量(而且,根据本发明,适配器对存储系统的待由服务器访问的特定设备的选择可以不时变化,但是这种变化将不一定是确定的)。

一般而言,当存储数据流量与融合网络上的其他数据流量组合时,不同类型流量的属性可以组合以产生对网络总体带宽的不充分使用,从而限制数据通信流量和/或存储流量的性能。

例如,现代服务器计算机通常包括两个或更多个1gbps或10gbps网络接口(在服务器连接至融合网络的背景下,在本文中被称为“接口”)。许多这种服务器运行允许大量服务器一起工作以解决涉及海量数据的问题的软件包(例如,hadoop开源软件包)。然而,这种软件(例如,hadoop)通常要求每个服务器具有唯一的名称和地址。因此,运行软件(例如,hadoop)的服务器之间的数据通信流量将通常仅使用每个服务器上可用的这两个(或更多个)网络连接之一。

相比而言,存储数据流量通常被配置成在服务器与磁盘驱动器之间具有冗余路径以便使所述部件中的任何部件的故障存续。这些冗余路径可以用于重新引导存储数据流量(例如,使存储数据流量分散于网络接口当中)以避免由数据通信流量(非存储流量)占用的网络接口。然而,用于实现这种重新引导的标准机制(例如,多路径i/o或“mpio”方法)产生了融合网络上的存储数据流量的严重性能损失。具体地,正常存储数据负载分散机制基于以下操作:以轮询方式跨所有可用接口发送存储命令或者确定对每条链路上有多少工作未完成的某个度量(例如,未完成命令的数量或未完成字节的总数或其他某个度量)以及向“最不繁忙”的接口发送命令。这些机制对服务器与磁盘驱动器之间的存储数据流量造成很大的性能损失的原因在于:为了获得最大性能,由磁盘驱动器执行的命令必须到磁盘上的连续位置。如果未发送用于访问连续位置的命令,则需要“寻找”操作来将磁盘驱动器的读/写磁头移动到新位置。每个这种寻找操作都将通常将整体性能降低约1%或更多。常规分散机制(轮询或“最不繁忙”分散机制)增大了执行磁盘访问命令序列的寻找数量,这是因为所述机制频繁地使所述序列中的连续命令采取从服务器到磁盘驱动器的不同路径。因为所述不同路径将(由于每条路径上的其他操作)具有不同的处理时间和等待时间,所以按一个顺序发出的命令将通常按不同的顺序执行。每次重排序都将引起寻找,并且由此降低整体数据承载能力。已经观察到,当这些常规分散机制应用于hadoop存储操作时,其将存储数据流量的总体性能降低约75%(即,可以传送的存储数据的量约为在不使用轮询或最不繁忙机制的情况下可能的量的25%)。

被称为“链路聚合”的另一种常规技术有时应用于分割第一设备(通常为服务器)与第二设备(通常为另一个服务器)之间、在可用于将这些设备耦合至网络的所有接口组成的组之间的流量,所述第一设备具有可用于将所述设备耦合至网络的多个接口,并且所述第二设备也具有用于将所述设备耦合至网络的多个接口。根据链路聚合,为了实现一种负载均衡,在通过网络将每个新的数据值流(即,将不会无序传输的每个新的数据值序列)从所述设备之一的所选接口传输至另一个设备的所选接口之前(例如,以随机或伪随机方式)做出对第一设备的接口之一以及第二设备的接口之一的新选择。这允许(对许多流进行求平均而获得的)数据通信流量使用所有可用接口并且保持在每个接口(除非一个接口故障)上发送的数据的量之间的大致均衡。

常规地,不建议执行链路聚合以便通过网络传输存储数据。然而,即使使用某种形式的链路聚合(与常规的推荐实践相反)以试图均衡服务器的多个接口与适配器的多个接口之间通过融合网络发生的存储数据流量,对链路聚合的这种使用将防止融合网络中的存储数据流量的显著不均衡。显著不均衡将由维持存储流量的容错必要的设计决策引起。也就是说,对从服务器(经由至少一个适配器)到每个存储设备的完全冗余路径的需要要求每个存储设备(或包括多个存储设备的存储系统)必须通过各自耦合于存储设备(或存储子系统)与网络之间的两个完全分离的网络连接设备(即,两个单独的适配器)附接到网络。否则,如果仅存在一个适配器,则适配器的故障将使存储设备(或子系统)不可用。因为每个这种适配器都必须是单独的设备,所以链路聚合无法均衡提供到同一存储设备(或存储子系统)的冗余数据路径的两个适配器之间的网络负载,并且无法防止通过一个适配器的存储数据流量相对于通过提供到同一存储设备(或存储子系统)的冗余数据路径的另一个适配器的存储数据流量的显著不均衡。因为适配器是单独的设备,所以一个可能比可以访问同一存储设备的其他一个或多个更繁忙并且因此更慢。相比而言,本发明的典型实施例可以即使当正在使用链路聚合时也减轻融合网络中的存储数据流量不均衡(并且防止显著的存储流量不均衡)。



技术实现要素:

本文中,术语系统(例如,网络、或耦合至网络的设备、或设备的可以耦合至网络的网络接口)的“带宽”表示或者系统的“消耗带宽”或者系统的“可用带宽”。表述系统的“消耗带宽”在本文中表示通过系统的数据速率(比特率)(例如,通过系统发生数据业务量的速率,或者对已经在某个时间间隔内通过系统发生的数据业务量的速率的平均或其他统计表征)。表述系统的“全可用带宽”在本文中表示系统的最大可能数据速率(比特率)(即,将通过系统发生数据业务量的最大速率)。表述系统的“可用带宽”在本文中表示系统的全可用带宽减去系统的消耗带宽。

在一些实施例中,本发明是一种用于均衡耦合至融合网络的计算设备(本文中被称为“服务器”)访问(通过适配器)耦合至网络的存储设备的系统中的存储数据流量(例如,以试图优化存储数据流量)的方法。在服务器上实现的一组代理(“服务器代理”)以及在适配器上实现的一组代理(“适配器代理”)被配置用于检测整个网络中的存储和数据流量的不均衡并对其进行响应,并且用于重新引导存储数据流量以便减少不均衡并且由此提高整体网络性能(针对数据通信和存储流量两者)。其他实施例包括被配置用于执行这种方法的系统以及被配置用于实施这种方法或用于这种系统中的设备。

通常,代理(服务器代理和适配器代理)中的每一个都自主地操作(除了因为适配器代理可以在某些情况下对来自服务器代理的请求和通知进行响应之外),并且没有中央计算机或管理器引导所述代理的操作。通常,适配器代理仅在适配器和服务器(在服务器中实现适配器)为至少一个存储设备提供存储数据路径时与服务器代理直接交互,服务器代理永不与其他服务器代理直接通信,并且适配器代理永不与其他适配器代理直接通信。然而,本发明的典型实施例允许所有代理对其他代理的行为作出反应并且影响所述行为,以便均衡整体网络流量并且以便避免使行为不稳定。此外,如果任何网络耦合设备故障,存续的网络耦合设备将在不具有任何中断的情况下继续均衡网络流量(并且调整以适应故障的结果)。

根据典型的实施例,以完全分散的方式均衡融合网络上的存储数据流量,通信被执行以便实现仅在适配器与服务器(不是在服务器之间或在适配器之间或从适配器到两个或更多个服务器)之间的每条数据路径的端点之间发生的均衡。任何参与者(例如,服务器接口、服务器代理、适配器接口或适配器代理)的故障仅影响所述参与者作为成员的路径。一般而言,在任何服务器代理与适配器代理(例如,服务器代理不与多于一个适配器代理共享这种通信)之间仅存在一对一通信。相比而言,用于均衡多个存储设备和多个服务器当中的存储数据流量的常规方法还未以此方式分散。

根据典型的实施例,服务器代理和适配器代理进行操作以收集关于网络状态的信息,并且以使服务器(在适当情况下)将针对存储设备的所有流量从(服务器与存储设备之间的)一条数据路径重新引导到被选择用于减少网络不均衡的(服务器与存储设备之间的)不同数据路径。

在本发明方法的典型实施例中,假设另一个实体(例如,管理或分配过程)已经将可以在服务器与每个存储设备(例如,磁盘驱动器)之间使用的所有数据路径通知给每个服务器(及其代理),所述服务器可以访问所述存储设备以便来往于所述存储设备被传送数据。通常,进一步假设每个服务器(及其代理)已经获知服务器与存储设备之间的(针对可由服务器访问的每个存储设备)优选数据路径(例如,基于对网络的静态分析,或以确定性方式确定(例如,到具有最低ip地址的适配器接口的路径))。

在一类实施例中,本发明是一种系统,所述系统包括:至少一个服务器,所述至少一个服务器具有至少一个服务器接口,其中,所述服务器被配置成通过所述服务器接口耦合至融合网络,并且所述服务器被配置成包括服务器代理;至少一个存储设备;以及至少一个适配器,所述至少一个适配器被配置成耦合至所述存储设备并且具有至少一个适配器接口(以及可选地还有至少另外一个适配器,所述至少另外一个适配器具有至少一个适配器接口并且被配置用于将所述存储设备耦合至所述网络),其中,所述适配器被配置用于经由所述适配器接口将所述存储设备耦合至所述网络,并且所述适配器被配置成包括适配器代理。

所述适配器代理被耦合且被配置用于:

判定每个所述适配器接口是否过载,并且生成每个所述适配器接口的适配器接口过载指示,其中,每个所述适配器接口的所述适配器接口过载指示指示所述适配器接口是否过载;并且

响应于来自所述服务器代理的请求而向所述服务器代理报告至少一个所述适配器接口过载指示(例如,响应于来自所述服务器代理的所述请求而使所述适配器向至少一个所述适配器接口断言指示至少一个所述适配器接口过载指示的数据)。

所述服务器代理被耦合且被配置用于:

使所述服务器向所述适配器代理断言请求,并且标识由所述适配器代理响应于所述请求而向所述服务器断言(即,提供)的至少一个适配器接口过载指示;并且

针对包括所述服务器接口并且所述服务器通过其而经由所述适配器访问所述存储设备的路径,以使用所述适配器接口过载指示的方式来判定所述路径是否过载。

在一些实施例中,所述服务器代理被耦合且被配置用于对所述路径过载的确定进行响应,包括通过:

判定是否选择到所述存储设备的新路径以供随后使用,以及

在确定应该选择所述新路径之后,使所述服务器将所述服务器与所述存储设备之间的存储数据流量路由改变至所述新路径。优选地,所述服务器代理被耦合且被配置用于:在使所述服务器将所述服务器与所述存储设备之间的存储数据流量路由改变至所述新路径之后等待具有足够持续时间的一段时间间隔,使得所述改变至所述新路径的影响可以反映在由每个所述适配器代理对所述适配器代理的每个适配器接口上的流量的持续监测的结果中;并且在所述等待之后,开始评估(例如,重新评估)到所述存储设备的路径,包括除了所述新路径之外的至少一条路径。在优选实施例中,所述等待的所述时间间隔是由被选择作为选定间隔(例如,10秒)的正常变量的随机数确定的,受制于预定的最短等待和最长等待。

在一些实施例中,所述系统包括第一适配器,所述第一适配器被配置用于将所述存储设备耦合至所述网络;以及第二适配器,所述第二适配器被配置用于将所述存储设备耦合至所述网络(以及可选地还有至少另外一个适配器,所述至少另外一个适配器被配置用于将所述存储设备耦合至所述网络),所述第一适配器包括至少一个第一适配器接口,并且所述第二适配器包括至少一个第二适配器接口,所述第一适配器包括第一适配器代理,并且所述第二适配器包括第二适配器代理,并且所述服务器代理被耦合且被配置用于:

监测发生在每个所述服务器接口上的数据流量(例如,接收流量和发射流量)以确定每个所述服务器接口的消耗带宽,并且根据每个所述服务器接口的所述消耗带宽来确定每个所述服务器接口的可用带宽;并且

对由所述第一适配器代理响应于从所述服务器向所述第一适配器断言的请求而提供至所述服务器的至少一个可用带宽指示进行标识,其中,每个所述可用带宽指示指示一个所述第一适配器接口的可用带宽,并且对由所述第二适配器代理响应于从所述服务器向所述第二适配器断言的请求而提供至所述服务器的至少一个附加可用带宽指示进行标识,其中,每个所述附加可用带宽指示指示一个所述第二适配器接口的可用带宽;并且

将包括所述服务器接口以及所述第二适配器的一个所述第二适配器接口的路径上的可用带宽确定为所述服务器接口上的所述可用带宽与所述一个所述第二适配器接口的所述可用带宽中的最小值。

可选地,所述适配器代理被耦合且被配置用于:

监测发生在每个所述适配器接口上的数据流量(例如,接收流量和发射流量),并且生成每个所述适配器接口的消耗带宽指示,其中,每个所述适配器接口的所述消耗带宽指示指示所述适配器接口的消耗带宽;并且

生成每个所述适配器接口的可用带宽指示,其中,每个所述适配器接口的所述可用带宽指示指示所述适配器接口的可用带宽;并且

响应于来自所述服务器代理的请求而向所述服务器代理报告至少一个所述适配器接口过载指示、以及至少一个所述消耗带宽指示和/或至少一个所述可用带宽指示(例如,响应于来自所述服务器代理的所述请求而使所述适配器向至少一个所述适配器接口断言指示至少一个所述适配器接口过载指示以及至少一个所述消耗带宽指示和/或至少一个所述可用带宽指示的数据)。

可选地,而且,所述适配器代理被耦合且被配置用于:

估计所述适配器处理附加数据的能力(例如,所述适配器的计算负载能力);和/或

筛选原始过载指示值以生成经筛选的过载值,其中,所述原始过载指示值指示已确定的过载,并且所述经筛选的过载值指示所述已确定的过载是否持久,并且其中,至少一个所述适配器接口过载指示指示所述经筛选的过载值。

在一些实施例中,所述适配器代理被耦合且被配置用于:生成每个所述适配器接口的可用带宽指示,其中,每个所述适配器接口的所述可用带宽指示指示所述适配器接口的可用带宽,包括通过:使从至少一个所述服务器代理接收到的针对一个所述适配器接口的每个规划附加带宽使用值老化,由此生成所述适配器接口的老化规划带宽使用值,并且针对每个所述适配器接口维护所述适配器接口的每个所述老化规划带宽使用值之和。在一些这种实施例中,所述适配器代理被耦合且被配置用于根据以下各项来生成每个所述适配器接口的所述可用带宽指示:所述适配器接口的全可用带宽、所述适配器接口的消耗带宽的至少一个测量结果、所述适配器处理附加数据的能力的指示、以及针对所述适配器接口的对所述适配器接口的每个所述老化规划带宽使用值所求得的和。

在一些实施例中,每个服务器都编程有实现所述每个服务器的所述服务器代理的软件,并且每个适配器都编程有实现所述每个适配器的所述适配器代理的软件。在一些实施例中,至少一个服务器代理或至少一个适配器代理在硬件中实施(例如,至少一个所述服务器包括实现其所述服务器代理的硬件子系统)。

本发明的其他方面是一种适配器(被编程或以其他方式被配置用于实现本发明适配器代理的实施例)、一种集成有这种适配器的磁盘驱动器(或其他存储设备)、一种集成有这种适配器的jbod(或其他存储设备系统)、一种服务器(被编程或以其他方式被配置用于实现本发明服务器代理的实施例)、一种本发明服务器代理的实施例的硬件实施方式以及一种本发明适配器代理的实施例的软件实施方式。

本发明的其他方面是在本发明系统、适配器、存储设备、jbod、服务器或其他设备的任何实施例的操作中执行的方法。

附图说明

图1是本发明系统的实施例的框图。

图2是本发明系统的另一个实施例的框图。

具体实施方式

在一类实施例中,本发明是一种系统,所述系统包括至少一个服务器,所述至少一个服务器通过至少一个服务器接口耦合至融合网络;以及至少一个存储设备,所述至少一个存储设备通过至少两个适配器耦合至所述网络。

将参照图1对这种系统的示例进行描述。在图1的系统中,服务器1和3(以及可选地还有其他服务器)以及适配器5、7、9和11(以及可选地还有其他适配器)中的每一个都耦合至融合网络20。存储子系统13通过适配器5和7中的每一个耦合至网络20。存储子系统15通过适配器9和11中的每一个耦合至网络20。存储子系统13和15中的每一个都可以是磁盘驱动器或其他存储设备,或者包括多个存储设备的存储子系统(例如,jbod)。

服务器1包括接口2(所述接口被配置用于将服务器1连接至网络20),并且服务器1被配置成包括应用子系统4(例如,被编程有实现所述应用子系统的软件)。服务器1还被配置成包括服务器代理子系统6(例如,被编程有实现所述服务器代理子系统的软件)。服务器3包括接口8(所述接口被配置用于将服务器3连接至网络20),并且被配置成包括应用子系统10(例如,被编程有实现所述应用子系统的软件)。服务器3还被配置成包括服务器代理子系统12(例如,被编程有实现所述服务器代理子系统的软件)。

在一些实施方式中,接口2和8中的每一个都被实现为物理设备(即,网络接口控制器(“nic”)。在其他实施方式中,接口2和8中的每一个都被实现为多个nic的软件定义封装器。在本发明的典型实施例中,接口2和8中的每一个都是具有其自己的互联网协议(ip)地址的硬件或软件元件。

适配器5被配置成包括适配器代理子系统14(例如,被编程有实现所述适配器代理子系统的软件)。适配器7被配置成包括适配器代理子系统16(例如,被编程有实现所述适配器代理子系统的软件)。适配器9被配置成包括适配器代理子系统18(例如,被编程有实现所述适配器代理子系统的软件)。适配器11被配置成包括适配器代理子系统22(例如,被编程有实现所述适配器代理子系统的软件)。

在示例性实施例中,网络20是以太网网络,并且元件1、3、5、7、9和11被配置用于根据iscsi(互联网小型计算机系统接口)联网协议通过网络20进行通信。iscsi协议是常规的基于互联网协议的联网标准,所述联网标准允许通过lan、wan或互联网传输数据。在此示例性实施例中,元件1、3、5、7、9和11(以及代理6、12、14、16、18和22)以简单的方式(比许多常规应用中简单得多)使用iscsi网络协议,其中,虽然允许服务器1(或3)与适配器5、7、9或11中的任何适配器之间的通信,但是在每个服务器(1或3)与每个适配器(5、7、9或11)之间一次只存在一条连接路径。

在示例性实施例中:

适配器5包括用于经由网络20与服务器1或3通信的iscsi接口。根据本发明的在适配器代理14与服务器代理6和12之间的通信通过此iscsi接口来实现。适配器5还被配置用于根据公知的串行附接scsi(“sas”)协议与存储子系统13通信以便实现服务器1(或3)与子系统13之间的存储数据流量;

适配器7包括用于经由网络20与服务器1或3通信的iscsi接口。根据本发明的在适配器代理16与服务器代理6和12之间的通信通过此iscsi接口来实现。适配器7还被配置用于根据sas协议与存储子系统13通信以便实现服务器1(或3)与子系统13之间的存储数据流量;

适配器9包括用于经由网络20与服务器1或3通信的iscsi接口。根据本发明的在适配器代理18与服务器代理6和12之间的通信通过此iscsi接口来实现。适配器9还被配置用于根据sas协议与存储子系统15通信以便实现服务器1(或3)与子系统15之间的存储数据流量;并且

适配器11包括用于经由网络20与服务器1或3通信的iscsi接口。根据本发明的在适配器代理22与服务器代理6和12之间的通信通过此iscsi接口来实现。适配器11还被配置用于根据sas协议与存储子系统15通信以便实现服务器1(或3)与子系统15之间的存储数据流量。

服务器1的应用子系统4被配置用于发起对耦合至网络20的存储设备(例如,子系统13或15中的存储设备)的访问。服务器3的应用子系统10被配置用于发起对耦合至网络20的存储设备(例如,子系统13或15中的存储设备)的访问。在典型操作中,实体(例如,管理或分配过程)已经将可以用于服务器1与每个存储设备之间的所有数据路径通知给应用子系统4和代理6,所述服务器可以访问所述存储设备以便来往于所述存储设备传送数据,并且应用子系统4和代理6已经获知服务器1与存储设备之间的优选数据路径(针对可由服务器1访问的每个存储设备)(例如,基于对网络的动态分析,或以确定性方式确定(例如,到具有最低ip地址的适配器接口的路径))。类似地,在典型操作中,实体(例如,管理或分配过程)已经将可以用于服务器3与每个存储设备之间的所有数据路径通知给应用子系统10和代理12,所述服务器可以访问所述存储设备以便来往于所述存储设备传送数据,并且应用子系统10和代理12已经获知服务器3与存储设备之间的优选数据路径(针对可由服务器3访问的每个存储设备)。

在典型的实施方式中,适配器代理子系统14、16、18和22(在本文中也被称为适配器代理或代理)中的每一个以及服务器代理子系统6和12(在本文中也被称为服务器代理或代理)中的每一个根据本发明(例如,以以下将描述的方式)被配置用于检测融合网络20上的存储数据流量的不均衡并对其进行响应,并且用于重新引导存储数据流量以便减少不均衡并且由此提高整体网络性能(针对数据通信和存储流量两者)。例如,在典型的实施方式中,服务器代理子系统6根据本发明(例如,以以下将描述的方式)被配置用于检测网络20上的存储数据流量的不均衡并且(在适当情况下)通过以下方式来对其进行响应:将存储数据流量从服务器1与(子系统13或15中的)特定存储设备之间的一条数据路径重新引导到服务器1与同一存储设备之间的另一条数据路径。

图2中示出了本发明系统的另一个实施例。在图2的系统中,服务器21(以及可选地还有其他服务器)以及适配器25、27、29和31(以及可选地还有其他适配器)耦合至融合网络20(所述网络可以与图1的网络20完全相同)。存储子系统23通过适配器25和27中的每一个耦合至网络20。存储子系统33通过适配器29和31中的每一个耦合至网络20。存储子系统23和33中的每一个都是包括多个存储设备的存储子系统(例如,每一个都是包括多个磁盘驱动器的jbod)。

服务器21包括接口22和24,所述接口中的每一个都是具有其自己的互联网协议(ip)地址并且被配置用于将服务器21连接至网络20的网络接口控制器(nic)。服务器21被配置成包括应用子系统26(例如,被编程有实现所述应用子系统的软件)并且还被配置成包括服务器代理子系统28(例如,被编程有实现所述服务器代理子系统的软件)。

适配器25包括接口30和32,所述接口中的每一个都是具有其自己的互联网协议(ip)地址并且被配置用于将适配器25连接至网络20的网络接口控制器(nic),并且适配器25被配置成包括适配器代理子系统38(例如,被编程有实现所述适配器代理子系统的软件)。适配器25还包括各自耦合至存储子系统23的端口34和36,并且被配置用于经由端口34或36中的任一个以及接口30或32中的任一个将(子系统23内的)存储设备耦合至网络20。

适配器27包括接口40和42,所述接口中的每一个都是具有其自己的互联网协议(ip)地址并且被配置用于将适配器27连接至网络20的网络接口控制器(nic),并且适配器27被配置成包括适配器代理子系统48(例如,被编程有实现所述适配器代理子系统的软件)。适配器27还包括各自耦合至存储子系统23的端口44和46,并且被配置用于经由端口44或46中的任一个以及接口40或42中的任一个将(子系统23内的)存储设备耦合至网络20。

适配器29包括多个接口(未示出),所述接口中的每一个都是具有其自己的互联网协议(ip)地址并且被配置用于将适配器29连接至网络20的网络接口控制器(nic),并且适配器29被配置成包括适配器代理子系统50(例如,被编程有实现所述适配器代理子系统的软件)。适配器29还包括各自耦合至存储子系统33的多个端口(未明确示出),并且被配置用于经由所述端口中的任何一个以及适配器29的nic中的任何一个将(子系统33内的)存储设备耦合至网络20。

适配器31包括多个接口(未示出),所述接口中的每一个都是具有其自己的互联网协议(ip)地址并且被配置用于将适配器31连接至网络20的网络接口控制器(nic),并且适配器31被配置成包括适配器代理子系统52(例如,被编程有实现所述适配器代理子系统的软件)。适配器31还包括各自耦合至存储子系统33的多个端口(未明确示出),并且被配置用于经由所述端口中的任何一个以及适配器31的nic中的任何一个将(子系统33内的)存储设备耦合至网络20。

在示例性实施例中,网络20是以太网网络,并且元件21、25、27、29和31被配置用于根据iscsi(互联网小型计算机系统接口)联网协议通过网络20进行通信。在此示例性实施例中,元件21、25、27、29和31(以及代理28、38、48、50和52)以简单的方式(比许多常规应用中简单得多)使用iscsi网络协议,其中,虽然允许服务器21与适配器25、27、29或31中的任何适配器之间的通信,但是在服务器与每个适配器(25、27、29或31)之间一次只存在一条连接路径。

在示例性实施例中:

适配器25的接口30和32中的每一个都是用于经由网络20与服务器21通信的iscsi接口。根据本发明的在适配器代理38与服务器代理28之间的通信通过此iscsi接口来实现。适配器25还被配置用于根据串行附接scsi(“sas”)协议经由端口34或36中的任一个与存储子系统23通信以便实现服务器21与子系统23之间的存储数据流量;

适配器27的接口40和42中的每一个都是用于经由网络20与服务器21通信的iscsi接口。根据本发明的在适配器代理48与服务器代理28之间的通信通过此iscsi接口来实现。适配器27还被配置用于根据串行附接scsi(“sas”)协议经由端口44或46中的任一个与存储子系统23通信以便实现服务器21与子系统23之间的存储数据流量;

适配器29包括用于经由网络20与服务器21通信的iscsi接口。根据本发明的在适配器代理50与服务器代理28之间的通信通过此iscsi接口来实现。适配器29还被配置用于根据sas协议与存储子系统33通信以便实现服务器21与子系统33之间的存储数据流量;并且

适配器31包括用于经由网络20与服务器21通信的iscsi接口。根据本发明的在适配器代理52与服务器代理28之间的通信通过此iscsi接口来实现。适配器31还被配置用于根据sas协议与存储子系统33通信以便实现服务器21与子系统33之间的存储数据流量。

服务器21的应用子系统26被配置用于发起对耦合至网络20的存储设备(例如,子系统23或33中的存储设备)的访问。在典型操作中,实体(例如,管理或分配过程)已经将可以用于服务器21与每个存储设备之间的所有数据路径通知给应用子系统26和代理28,所述服务器可以访问所述存储设备以便来往于所述存储设备传送数据,并且应用子系统26和代理28已经获知服务器21与存储设备之间的优选数据路径(针对可由服务器21访问的每个存储设备)(例如,基于对网络的动态分析,或以确定性方式确定(例如,到具有最低ip地址的适配器接口的路径))。

在典型的实施方式中,适配器代理子系统38、48、50和52(在本文中也被称为适配器代理或代理)中的每一个以及服务器代理子系统26(在本文中也被称为服务器代理或代理)根据本发明(例如,以以下将描述的方式)被配置用于检测融合网络20上的存储数据流量的不均衡并对其进行响应,并且用于重新引导存储数据流量以便减少不均衡并且由此提高整体网络性能(针对数据通信和存储流量两者)。例如,在典型的实施方式中,服务器代理26根据本发明(例如,以以下将描述的方式)被配置用于检测网络20上的存储数据流量的不均衡并且(在适当情况下)通过以下方式来对其进行响应:将存储数据流量从服务器21与(子系统23或33中的)特定存储设备之间的一条数据路径重新引导到服务器21与同一存储设备之间的另一条数据路径。

在服务器21的每个以太网端口(nic22或24)到每个可访问存储设备(通常,每个都是磁盘驱动器)之间存在至少四条数据路径(例如,一条路径通过接口30、32、40和42中的每一个),并且因此在服务器21与每个可访问存储设备之间存在至少八条数据路径。因此,图2的系统为存储设备访问提供了许多冗余。

在典型的数据中心(例如,实现图1的系统或图2的系统的数据中心)中,管理服务器(在图1或图2中未示出)将耦合至网络以供用于对数据中心进行配置和重新配置(例如,包括通过将可以用于服务器21与每个存储设备之间的所有数据路径通知给图2的应用子系统26和代理28,所述服务器可以经由网络20访问所述存储设备以便来往于所述存储设备传送数据)。

设想了本发明服务器的一些实施例被编程(例如,服务器的应用子系统被编程)用于运行允许大量服务器一起工作以便解决问题(通常涉及海量数据)的数据包(例如,hadoop开源软件包)。还设想了多个这种服务器(以及各自被配置用于实现本发明适配器代理的实施例的多个适配器)可以耦合至数据中心(例如,hadoop数据中心)中的融合网络,所述数据中心可能位于单个建筑物中。每个适配器都将通常耦合至jbod,使得jbod的单独磁盘驱动器可由服务器经由适配器通过网络访问。被考虑为“本地”于每个服务器的磁盘驱动器将通常位于一个jbod(或多于一个jbod)中,并且所述一个或多个jbod将通常安装在一个机架中(例如,一个服务器可以获得其处理的数据的三个副本,将一个副本存储到一个机架上的两个磁盘驱动器上,并且将第三副本存储在另一个机架上的磁盘驱动器上)。在这种实施例中,服务器将经由网络耦合以允许并行地对一组(例如,一大组)数据的分布式处理(处理中的一些是响应于服务器中的每一个断言的命令而执行的)。

更一般地,在本发明系统、服务器或适配器的典型实施方式中,每个适配器代理(例如,图1的代理14、16、18或22,或图2的代理38、48、50或52)和每个服务器代理(例如,图1的代理6或12,或图2的代理28)正处理配置有软件(例如,源代码以语言python和/或语言c来编写的软件)的硬件以根据本发明的实施例而操作。例如,服务器的服务器代理和应用子系统两者(例如,图1的服务器1的代理6和子系统4两者,或图1的服务器3的代理12和子系统10两者)都可以在处理配置有软件的硬件(例如,计算机)时实现。通常,不需要改变任何应用(例如,由图1的服务器1的子系统4或服务器3的子系统10或图2的服务器21的子系统26实现的应用)以获得本发明的典型实施例的优点。通常,每个服务器代理和适配器代理以对于应用来说不可见的方式操作,并且使用所涉及的服务器或适配器接口(包括仅执行数据通信操作的接口)中的任何接口的任何应用都将得益于根据本发明执行的存储数据负载均衡。

接下来,我们对每个适配器代理和每个服务器代理在根据本发明的一类实施例的本发明的系统的实施例的操作期间的操作进行描述。在描述中,“接收流量”(或“接收数据”)表示从网络向适配器(或服务器)断言(即,提供)的数据,并且“发射流量”(或“发射数据”)表示从适配器(或服务器)向网络断言(即,提供)的数据。通常,单个适配器(或单个服务器)具有两个到网络的接口,并且其可以具有多于两个到网络的接口。

在一些实施例中,每个适配器代理(例如,图1的代理14、16、18和22中的每一个,或者图2的代理38、48、50和52中的每一个)都被配置用于执行以下操作中的全部或一些操作:

1.适配器代理监测在适配器的每个接口上发生的接收流量和发射流量(例如,以比特每秒为单位)并且生成每个所述接口的消耗带宽的至少一个测量结果。通常,每个监测样本通常是在相对较短的时间段(例如,几秒)内取得的,并且适配器代理确定接收数据样本流和发射数据样本流的统计表征,以提供对每个接口的消耗带宽(在每个接口上使用的带宽)的短期和长期测量结果。由于现代nic是全双工的(通常,适配器的nic可以同时进行发送和接收),所以通常对每个接口上的接收数据和发射数据保持独立的统计数据。在优选实施例中,确定值的指数移动平均数(即,在这种情况下,接口上的接收流量在固定持续时间的移动时间窗口内的指数移动平均数,或者接口上的发射流量在固定持续时间的移动时间窗口内的指数移动平均数)的公知方法用于确定对每个接口上的接收流量的统计表征以及对每个接口上的发射流量的统计表征,这是因为这种指数移动平均数计算起来很便宜。在(于2002年8月20日公布的)美国专利6,438,141中参照其图8描述了用于确定这种指数(加权)移动平均数的方法的示例。在优选实施例中,每个短期移动平均数都近似于在20秒的间隔(窗口)(或基本上等于20秒的间隔)内的算术移动平均数,并且每个长期平均数都近似于在60秒的间隔(窗口)(或基本上等于60秒的间隔)内的算术移动平均数。其他窗口持续时间和计算方法可以用于实现本发明的其他实施例;

2.适配器代理计算(例如,估计)适配器处理附加数据的能力。在优选实施例中,这是适配器的计算负载能力。由于处理附加数据将涉及更多计算工作,所以如果适配器正以其计算能力运行,则其可能不能处理附加存储数据流量,即使其接口未被充分利用。在一些实施例中,适配器代理将可能由适配器在处理存储数据流量时消耗的任何其他资源的剩余能力合并到其对适配器处理附加数据的能力的计算结果(例如,估计值)中。可选地,适配器代理还确定适配器的降额因子,适配器代理将所述降额因子乘以(在一些实施例中)每适配器接口的附加可用带宽的原始估计量以确定每适配器接口的附加可用带宽的有限估计量(例如,以将适配器代理将报告的带宽限制为可用于所述接口,如以下描述的);

3.如果服务器代理已经向适配器代理指示服务器(在所述服务器中实现服务器代理)规划在不久的将来使用未来的附加带宽(在包括适配器的接口的路径上),则适配器代理维持每个这种服务器代理已经针对包括适配器接口的一条或多条路径而向适配器代理指示的(多个)规划附加将来带宽使用的总和。在优选实施例中,(适配器的)适配器代理将只有在服务器正访问包括适配器的路径上的存储设备(例如,磁盘驱动器)时才仅接受来自服务器的规划带宽使用通知。服务器代理对规划将来带宽使用的指示不是预留或带宽分配,而是提供由适配器代理确定的实际消耗带宽统计数据将可能在不久的将来发生变化的通知。由服务器代理进行的这种指示以及由适配器代理维持的总和的目的是消除或限制许多存储设备的数据流量将被立即引导至一个适配器的一个接口的可能性。适配器代理通常随着时间的推移而减少(即,“老化”)每个规划附加带宽使用通知,并且维持适配器的每个接口的老化规划附加使用值的经更新(老化)总和。由于新流量实际上被路由通过接口,所以这种新的实际流量包括在由适配器代理进行的每接口流量测量中。在优选实施例中,适配器代理通过以20秒的半衰期(或基本上等于20秒的半衰期)指数地(即,实现所指示的规划附加带宽使用值的指数式衰减)降低由所述通知指示的带宽值来使每个规划附加带宽使用通知老化。可替代地,其他机制和值(例如,指数式衰减半衰期值)可以用于实现每个所指示的经规划附加带宽使用值的期望老化;

4.适配器代理判定(计算)适配器(在所述适配器中实现所述代理)的每个接口是否都过载,并且(响应于来自服务器代理的请求而)向服务器代理报告对这种过载(在确定过载存在的情况下)的指示。这种过载指示可由服务器用于判定是否尝试停止使用接口(如果可能的话)。服务器将通常被配置用于使用所述指示来判定链路是否已经被几乎完全利用一会儿并且仍被完全利用,并且若是,则将链路考虑为过载并且判定将一些存储数据流量路由到其他地方是否将更好。适配器代理可以对(指示确定过载的)原始过载指示值进行筛选以生成指示确定过载是否持续的经筛选的过载值,并且然后(响应于来自服务器代理的请求而)报告经筛选的过载值而不是原始过载值。在典型的实施例中,适配器代理被配置用于将接口被视为被完全利用的所选带宽用作过载带宽水平。在一个优选实施例中,过载带宽水平被选择为接口的全可用带宽的92.5%,并且如果过载计算至少连续两次产生真,则接口(通过经筛选的过载值)被报告为过载。在典型的实施例中,如果以下情况中的任一情况为真,则过载计算被考虑为真:

消耗发射打款的短期和长期测量结果(例如,长期和短期发射带宽平均值)两者都超过过载带宽水平,或者消耗接收带宽的短期和长期测量结果(例如,长期和短期接收宽带平均值)两者都高于过载带宽水平;或者

已经(或者几乎已经)达到适配器处理数据的能力;

5.适配器代理计算每适配器接口可用带宽的估计量(即,可用于容纳新存储设备的可能被服务器重新引导到接口的数据流量的附加带宽)。这种计算不需要关于新存储设备的状态或能力的任何知识,而相反是由适配器代理进行的对来往于存储设备的额外存储数据流量的估计量的确定,如果这种额外流量被引导至接口,则所述额外流量可以由接口处理。对可用带宽的这种估计值通常是根据以下各项来计算的:接口的全可用带宽(例如,以比特每秒为单位的原始能力)、接口的流量统计数据(即,适配器接口的消耗带宽的至少一个测量结果)、适配器处理附加数据的能力(即,计算负载)以及针对接口的总指示将来带宽通知。由于存储数据流量在各种时候都包括读和写流量,所以所估计的附加可用流量计算结果通常假设附加流量将是发射或接收流量,以已经最繁忙的为准。这防止了任何附加流量使接口上的已经重负载的数据行进方向过载。在优选实施例中,所估计的可用带宽基于接口的平均接收和发射数据加上最近流量的正常变化的估计值(即,标准偏差)以便避免减缓对现有工作的处理。在优选实施例中,流量的平均和预期变化的估计值是经由如例如在上述美国专利6,438,141中描述的“加速、减速(fastup,slowdown)”指数移动平均数(其中,如果最近生成的统计数据大于之前生成的统计数据,则相对较大权重应用于下一个平均值;如果最近生成的统计数据小于或等于之前生成的统计数据,则相对较小权重应用于下一个平均值)来计算的。使用简单计算,这种“加速、减速”指数移动平均数可以近似于最近平均数加上系列的一个标准偏差。而且,所估计的总原始可用带宽可以按安全因子减小,以便使通过接口的流量中的短暂冲击存续,而不会降低性能。在一个实施例中,适配器接口的可用带宽的估计量(在以下等式中被表示为值“可用”)被计算如下(但是应当理解的是,尽管可以将附加项和因子考虑在计算内以便调整行为):

可用=(安全_因子*(原始_带宽-最差情况))*处理_能力_降额_因子,

其中,值“最差情况”等于最大(发射_平均值_和_变化,接收_平均值_和_变化)+总和(老化-未来-带宽-通知),其中,

“最大(a,b)”表示值“a”或值“b”,以较大者为准,

发射_平均值_和_变化是接口的消耗发射带宽的测量结果(例如,接口的平均发射数据的估计值加上最近发射流量的正常变化(标准偏差)的估计值),

接收_平均值_和_变化是接口的消耗接收带宽的测量结果(例如,接口的平均接收数据的估计值加上最近接收流量的正常变化(标准偏差)的估计值),

“总和(老化-未来-带宽-通知)”是适配器接口的老化规划附加带宽使用值的总和,

安全_因子是上述安全因子,

原始_带宽表示接口的全可用带宽,并且

处理_能力_降额_因子是适配器的(上述类型的)降额因子;和/或

6.适配器代理对来自服务器代理的状态请求(即,来自与适配器位于同一存储数据路径上的服务器的服务器代理的状态请求)进行响应。通常,返回至服务器代理的状态报告针对每个适配器接口包含接口的当前过载状态和可用带宽,如上所述。

在一些实施例中,每个服务器代理(例如,图1的代理6和12中的每一个,或者图2的代理28)被配置用于执行以下操作中的全部或部分操作:

1.如适配器代理的典型实施例一样,服务器代理监测发生在服务器的每个接口上的接收和发射流量(例如,以比特每秒为单位),并且生成每个所述接口的消耗带宽的至少一个测量结果。通常,每个监测样本通常是在相对较短的时间段(例如,几秒)内取得的,并且服务器代理确定接收数据样本流和发射数据样本流的统计表征,以提供对每个接口的消耗带宽(在每个接口上使用的带宽)的短期和长期测量结果。由于现代nic是全双工的(通常,服务器的nic可以同时进行发送和接收),所以通常对每个接口上的接收数据和发射数据保持独立的统计数据。在优选实施例中,确定值的指数移动平均数(即,在这种情况下,接口上的接收流量在固定持续时间的移动时间窗口内的指数移动平均数,或者接口上的发射流量在固定持续时间的移动时间窗口内的指数移动平均数)的公知方法用于确定对每个接口上的接收流量的统计表征以及对每个接口上的发射流量的统计表征(例如,以上述与本发明适配器代理的典型实施例一样的方式);

2.针对访问已被分配给服务器的路径的每个存储设备(例如,磁盘驱动器)(在存储设备可用于由服务器经由融合网络通过所述路径而访问的意义上),服务器代理可以使服务器向作为所述路径的另一端点的适配器声明一请求,并且服务器代理接收适配器的带宽(消耗带宽和/或可用带宽)和/或过载信息(即,由适配器的适配器代理响应于所述请求而生成的过载和/或带宽报告)。在许多情况下,相同的适配器用于若干存储设备和路径,因此响应于一个请求接收到的适配器数据经常可以用于多条路径;

3.针对服务器(在所述服务器中实现服务器代理)通过其经由适配器而访问存储设备的每条路径,服务器代理计算所述路径是否过载并且是否需要甩负荷,以及所述路径的可用(未使用)带宽有多少。在典型实施例中,服务器代理将路径上的可用带宽确定为以下各项中的最小值:服务器接口(其沿所述路径耦合)上的可用带宽或者适配器接口(其沿所述路径耦合)上的可用带宽。在典型实施例中,如果服务器接口或者适配器接口过载,则服务器代理确定路径是过载的(典型地,包括通过使用由适配器代理响应于来自服务器的请求而向服务器断言的报告中的接口过载指示);

4.如果至少一条过载路径正在使用(由服务器用来访问任意(多个)存储设备),则服务器代理通常实施选择过程来访问每个过载。在优选实施例中,如果存在至少两条过载路径正被服务器使用,则服务器代理按随机顺序对其进行考虑,并且每个周期仅选择一条:

如果存在另一条路径可用(在沿过载路径耦合的服务器与适配器之间),所述路径没有过载并且具有足够的可用带宽用于另一存储设备,则服务器代理选择这另一条路径以供随后使用。如果两条或更多条这种替换路径可用,则服务器代理选择具有最高可用带宽的路径;

否则,如果服务器(及其服务器代理)已经获知沿过载路径耦合的服务器与存储设备之间的优选数据路径,并且如果当前(过载)路径不是最初由服务器分配用于访问存储设备的路径,则所述优选数据路径被选择以供随后使用(不管所述优选数据路径是否过载)。通常,如果当前(过载)路径的分配未改变(即,如果没有其他路径被选择用来替换所述当前路径),则以与当前路径相同的方式来考虑下一过载路径;

5.如果进行新路径分配(即,如果服务器代理选择另一路径来替换当前路径),则服务器代理通常执行以下动作:

通知与新选择的路径相关联的适配器代理所述服务器接口(其沿所述新选择的路径耦合)计划向适配器的特定接口断言具有特定带宽(例如,一个磁盘的带宽价值的将来负载)的存储数据流量。这立即影响了由适配器的适配器代理生成的统计数据和报告,并且通常防止(间接地)两个服务器试图使用适配器接口上相同过剩的带宽;并且

服务器代理使服务器将服务器与相关存储设备之间的存储数据流量路由改变至新选择的路径;和/或

6.在使服务器将服务器与存储设备之间的存储数据流量路由改变至新选择的路径之后,服务器代理等待具有足够持续时间的一时间间隔(例如,预先确定的或随机选择的时间间隔),使得服务器代理最近动作的影响可以反映在由每个适配器代理对适配器代理的每个适配器接口上的流量的持续监测结果(例如,监测统计数据)中。在所述等待之后,服务器代理开始评估(例如,重新评估)到存储设备的路径,包括除了新路径之外的至少一条路径。在优选实施例中,所述等待的所述时间间隔由被选择为所选间隔(例如,10秒)正常变量的随机数确定,受制于预定的最短等待和最长等待。

由本发明系统实施例执行的示例性方法如下。服务器代理(在这里示例中,图2中服务器21的代理28)响应于确定服务器21应经由通过适配器25的特定接口(在这个示例中,即接口30)的路径访问存储设备(通过适配器25耦合至网络20)将规划的附加带宽使用通知发送至适配器代理(在这个示例中,图2的适配器25的适配器代理38)。作为响应,适配器代理38随时间推移减小(即,“老化”)由所述通知指示的规划附加带宽使用值,并且维护针对接口30接收到的所有老化规划附加带宽使用值的已更新(老化)总和(并且使用所述老化总和来生成当前过载状态和可用带宽指示)。由于新流量被实际路由通过接口30,因此这种新的实际流量被包括在由适配器代理38进行的每接口流量测量中(并且用于生成每个适配器接口的当前过载状态和可用带宽指示)。同时,耦合至网络的其他适配器的其他适配器代理独立地执行其自己的每适配器接口流量测量(并且生成其自己的每接口当前过载状态和可用带宽指示)。服务器代理28(从每个适配器代理)请求指示适配器的每个接口的当前过载状态和可用带宽的报告,在所述适配器中实现每个这种适配器代理并且所述适配器是到由服务器使用的存储设备的路径的一部分,并且作为响应,每个被查询适配器代理独立地将所请求的报告发送至服务器代理28。服务器代理28使用代理28针对其自己的服务器接口自身生成的流量的报告和统计表征,以判定是否允许服务器21经由当前路径来访问存储设备(由最新断言的规划附加带宽使用通知假设),或者是否选择另一路径(来替换当前路径)以供服务器21访问存储设备。如果服务器代理28选择新路径来供服务器21访问存储设备,则服务器代理28通知与新选路径相关联的适配器代理所述服务器接口(其将被耦合至新选路径)计划向适配器的特定接口断言具有特定带宽的存储数据流量,并且服务器代理28使服务器21将服务器21与相关存储设备之间的存储数据流量路由改变至新选择的路径。因此,系统以分散化方式进行操作(从独立地适配器代理向服务器的服务器代理独立断言独立生成的报告),从而选择由服务器访问存储设备的最佳路径。

在本发明的一些实施例中,耦合至融合网络的服务器的服务器代理(例如,图1的代理6和12中的每一个,或者图2的代理28)被配置用于检测并重新路由网络瓶颈周围的存储流量,除了由适配器接口流量或适配器能力引起的那些之外。这种瓶颈示例是由服务器与其他(多个)可能未参与再均衡机制的服务器之间的传统数据通信流量引起的网络瓶颈。

在一类优选实施例中,服务器和适配器(例如,图1的元件1、3、5、7、9和11,每个元件实现有多个网络接口)耦合至融合网络(例如,图1的网络20),所述融合网络为以太网,并且服务器和适配器被配置用于根据iscsi(互联网小型计算机系统接口)联网协议通过网络进行通信。在这类实施例中,服务器代理和适配器代理(例如,图1的代理6、12、14、16、18和22)以简单的方式(比许多常规应用中简单得多)使用iscsi网络协议,其中,虽然允许服务器(例如,服务器1或3)与适配器(例如,适配器5、7、9或11)中的任何适配器之间的通信,但是在每个服务器与每个适配器(至存储设备)之间一次只存在一条连接路径。在这类实施例中,服务器代理使用常规多路径i/o(“mpio”)技术(或常规mpio技术的新的简化版本)来完成根据本发明的存储数据流量均衡。表述“mpio型子系统”在此用于指示实现常规mpio的(例如,服务器的)处理子系统或实现常规mpio的简化版本的处理子系统中的任一者。

在所描述的这类实施例中,每个服务器包括mpio型子系统(例如,内核中的mpio驱动器),所述mpio型子系统根据iscsi经由服务器接口中的所选择接口来管理数据输入/输出。服务器的服务器代理与mpio型子系统交互,包括通过设置存储设备访问“策略”,所述策略允许服务器(经由网络和适配器之一)仅通过已被服务器代理选择的服务器接口之一来访问存储设备。这种策略类似常规的mpio“仅故障转移”,所述策略部执行负载均衡并且代替地使用单个有效路径用于网络访问(并且其他潜在可用路径仅是备用路径,所述备用路径仅在单个有效路径故障时使用)。然而,存储设备访问策略由本发明服务器代理根据本发明进行使用从而以新的方式实现存储数据流量均衡。当服务器的服务器代理选择新路径(根据本发明方法的任何实施例,通常包括从适配器代理接收所请求报告的步骤)以由服务器经由服务器的新选接口访问存储设备,所述服务器代理通过使mpio型子系统指定新的存储设备访问“策略”而使服务器将存储数据流量(去向或来自存储设备)的路由改变至新选路径,所述策略允许服务器仅经由已被服务器代理选择的服务器接口中的新接口来访问存储设备。服务器代理还使新的存储设备访问路径延伸至由服务器代理选择的合适适配器接口。

因此,在所描述的这类实施例中,mpio型子系统(由本发明服务器代理)用来根据本发明均衡融合网络上的存储数据流量。

mpio最初是在隔离开的存储网络上发展的,并且常规mpio负载均衡在融合网络上将不会运行良好。例如,假设尝试在融合网络(被实现为以太网)中使用mpio来均衡耦合至网络的服务器的多个以太网端口与耦合至网络的适配器的多个以太网端口之间的存储数据流量,其中,所述适配器还具有耦合至待由服务器访问的磁盘驱动子系统(即,jbod)的多个“后端”sas端口。在示例中,mpio的所有常规负载均衡“策略”(跨所有可用以太网接口以循环复用方式发送存储命令,或者确定每条链路上有多少工作未解决的某个度量以及向‘最不繁忙的’以太网接口发送命令)通常将增加执行一系列磁盘访问命令所需的搜寻次数,因为其将频繁地使序列中的连续命令采取不同的路径从服务器到磁盘驱动器(经常使命令无序地到达磁盘驱动器),并且因此将使得上述过度搜寻问题成为过快改变通过所述网络的存储数据路径的结果而不管改变是否是令人期望的。相比而言,本发明的典型实施例(包括本发明服务器代理的实施例使用服务器的mpio型子系统来均衡如上所述融合网络上的存储数据流量的那些实施例)将通常不会引起过度搜寻问题,因为其通常将仅在需要时仅改变用于访问任一磁盘驱动器的存储数据路径,并且通常非常不频繁(例如,每小时一次、两次或几次)。本发明的典型实施例的重要优点是维持将命令经由融合网络有序传递至磁盘,同时调整交叉流量(以执行存储数据流量均衡)。

在另一类实施例中,实现本发明服务器代理实施例的服务器还实现用户接口。在服务器的典型操作过程中,在具有耦合至服务器的显示设备的这种实施例中,用户接口将使显示设备显示服务器代理的操作或状态的指示和/或由服务器代理所接收的报告或做作出的判定的指示。例如,可以显示以下类型的指示:服务器代理监测服务器接口流量和/或带宽的状态、从适配器代理接收的报告(例如,关于适配器接口状态和可用带宽)、以及当前存储设备访问路径应该或不应该被改变的判定。

本发明的典型实施例的优点和特征包括以下各项:

1.根据典型的实施例,以完全分散化的方式均衡融合网络上的存储数据流量,通信被执行以便实现仅在适配器与服务器(不是在服务器之间或在适配器之间或从适配器到两个或更多个服务器)之间的每条数据路径的端点(例如,图1的服务器1与服务器5,或图2的服务器21与适配器25)之间发生的均衡。任何参与者(例如,服务器接口、服务器代理、适配器接口或适配器代理)的故障仅影响所述参与者作为成员的路径。一般而言,在任何服务器代理与适配器代理(例如,服务器代理不与多于一个适配器代理共享这种通信)之间仅存在一对一通信。相比而言,用于均衡多个存储设备和多个服务器当中的存储数据流量的常规方法还未以此方式分散。

2.实现存储流量均衡所需的通信仅在适配器与服务器之间的每条数据路径的端点之间(例如,图1的服务器1与适配器5,或者图2的服务器21与适配器25)。因此,服务器与适配器之间的连接数量由同服务器与适配器之间的路径相关联的存储设备(例如,磁盘数量)数量界定。因此,即使在具有上千个服务器和适配器的非常大的数据中心,实现本发明的典型实施例需要的每个服务器和适配器上的计算负载以及网络负载非常小。

3.不存在针对存储数据流量的带宽预保留或锁定。因此,任何参与者(即,服务器接口、服务器代理、适配器接口或适配器代理)的故障将立即反映在整体统计数据中,并且参与者(在故障之前)所使用的资源将自动可用于由剩余设备使用。如果一个或多个故障设备随后返回,则若流量导致过载则本发明方法的典型实施例的性能将导致其他服务器重新引导流量离开由(多个)已恢复设备使用的(多条)路径。

4.即使当服务器将规划附加带宽使用通知发送给适配器时,(在适配器中实现的)适配器代理通常随时间推移减小(即,“老化”)由每个通知指示的规划附加带宽使用值。老化通常将适配器的每个接口的老化规划附加带宽使用值相对快速地减小(至零)。因此,没有很快导致附加观察存储数据流量的规划附加带宽使用通知被迅速忽略。

5.由服务器选择的导致暂时过载的数据路径通常在非常短的时间内被更改(即,被到达同一存储设备的新数据路径取代)。

6.宣布每个服务器开始使用新路径的意图的过程(即,由每个服务器代理将规划附加带宽使用通知发送至每个适配器的适配器代理,这将受所指示的规划附加带宽使用的真实存在影响)防止许多服务器在几乎相同时刻作出相同的决策。即,其将单独基于历史数据实质地防止可根据几乎同步的路径决策而发生的任何冲突。否则,所有服务器可查看指示轻度过载接口的统计数据,并且其中所有服务器可重新引导至所述接口的路径,从而导致严重的过载状况。

7.使用随机周期(例如,在服务器代理在使服务器将服务器与存储设备之间的存储数据流量路由改变至新选路径之后等待一随机确定的时间间隔从而使得在服务器代理开始重新评估到存储设备的路径之前服务器代理的最新动作的影响可以反映在监测统计数据中的实施例中)防止服务器工作在锁定步骤中,进一步避免做出同步冲突决策。

8.如果网络变为被充分利用(即,所有接口都过载),从而使得没有机会来重新引导存储流量,在典型地实施例中,所有服务器和适配器将恢复到服务器与适配器之间的预定“优选”数据路径。这意味着将不会进行无用的重新引导尝试。此外,如果优选数据路径以静态地均衡所有数据流量的方式被选择,则它们应在全负载网络中构成最优配置。

9.不需要改变任何应用(例如,由图1的服务器1的子系统4或服务器3的子系统10或者图2的服务器21的子系统26实现的应用)以获得本发明的典型实施例的优点。通常,每个服务器代理和适配器代理以对应用不可见的方式运行,并且使用所涉及接口中的任何接口的程序和设备将从存储数据负载均衡中受益(包括仅执行数据通信操作的那些程序和设备)。

本发明的其他方面是被编程或以其他方式被配置用于实现本发明适配器代理实施例的适配器(例如,图1的适配器5、7、9和11中任何一个,或者图2的适配器25、27、29和31中任何一个)、集成有这种适配器的磁盘驱动器(或其他存储设备)(例如,将存储子系统15实现为磁盘驱动器,与适配器9(以及适配器11)集成为单个设备100,如图1中所示)、集成有这种适配器的jbod(或其他存储设备系统)(例如,将存储子系统33实现为jbod,与适配器29(以及适配器31)集成为单个设备101,如图2中所示)、被编程或以其他方式被配置用于实现本发明服务器代理实施例的服务器(例如,图1的服务器1和3中任何一个,或者图2的服务器21)、本发明服务器代理的实施例的硬件实施方式(例如,图1的代理6,在硬件中实现)、以及本发明适配器代理的实施例的硬件实施方式(例如,图1的代理14,在硬件中实现)。

本发明的其他方面是在本发明系统、适配器、存储设备、jbod、服务器或其他设备的操作中执行的方法。一种这样的方法包括以下步骤:

通过融合网络从服务器到适配器断言一请求,其中,所述服务器被配置成包括服务器代理并且所述适配器被配置成包括适配器代理;

采用所述服务器代理来对由所述适配器代理响应于所述请求而断言(即,提供)至所述服务器的服务器接口的至少一个适配器接口过载指示进行标识,其中,所述适配器接口过载指示指示所述适配器的适配器接口是否过载;并且

针对包括所述服务器接口并且所述服务器通过其而经由所述适配器访问至少一个存储设备的路径,采用所述服务器代理来以使用所述适配器接口过载指示的方式来判定所述路径是否过载。

应理解的是,虽然本发明的某些形式已经在此被展示且被描述,但是本发明不限于所描述或所示出的特定实施例或者所描述的特定方法。除非在权利要求语言中明确描述,否则描述方法的权利要求不暗示任何特定的步骤顺序。

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