用于存储网络的方法和系统的制作方法

文档序号:6560420阅读:130来源:国知局
专利名称:用于存储网络的方法和系统的制作方法
技术领域
本发明一般地涉及数据存储网络、系统和方法,并且更具体地涉及在存储区域网(SAN)型体系结构中有用的数据队列管理设备和方法。
背景技术
对于数据存储装置,诸如基于磁盘的数据存储装置,通常对于它在良好条件下以及在错误条件下能够处理的请求的数目具有一个推荐值。该值通常被称作队列深度(Queue Depth),并且可以被磁盘装置驱动器用来控制对存储装置的输入/输出(I/O)流。
在多路径配置环境中,存在多条路径来向I/O提供磁盘装置驱动器。由于从磁盘装置驱动器发送到存储装置的I/O的数目还由队列深度值所限定,所以会有很多任务在磁盘装置驱动器等待队列中排队。这在错误恢复期间会引起问题,因为磁盘装置驱动器通常将多次重试对队列的所有请求(例如,每个排队请求进行五次重试)。由于在多路径配置环境中等待队列会变得长得多,所以这会导致在错误恢复期间显著的性能下降,或者在最坏的情况下,系统悬置(hanging)导致应用超时。
为了解决这个问题,存储多路径装置驱动器可以在其用以限制发送到磁盘装置驱动器的I/O量的级别上实现队列深度控制。该处理可以帮助解决在错误恢复进程期间在磁盘装置驱动器级别上的性能下降问题。
然而,这会在存储多路径装置驱动器级别上具有大I/O或繁重I/O的正常条件(非错误)期间引入进一步的问题,特别是在向少量的存储装置泛洪非常大的I/O的特定类型应用的情况下。在这种条件下,会在存储多路径装置驱动器的等待队列,将大量任务加入队列,这会导致严重的性能下降和/或系统悬置情况。
可以理解,在存储多路径装置驱动器级别上缺少队列深度限制的情况下,磁盘装置驱动器会成为错误恢复情形中的瓶颈。但是,如果存储多路径装置驱动器使用队列深度来限制I/O流,则在具有繁重I/O的正常(非错误)条件期间,存储多路径装置驱动器会成为该瓶颈。
在Lumb等人的题为“Quality of Service Controller and Method fora Data Storage System”的US2004/0194095A1中,公开了针对多个存储系统工作负载的每一个的请求进行优先级排序。根据请求的优先级,将请求选择性地转发到存储装置队列,使得将装置队列维持在目标队列深度。响应于请求的等待时间值,调整目标队列深度,其中基于对每个工作负载的请求的到达时间与完成时间之差,计算等待时间值。通过基于监测到的请求的到达时间和其工作负载的目标等待时间,计算请求的目标期限时间,可以完成对请求的优先级排序。为了减少等待时间,当工作负载的目标等待时间小于其计算的等待时间值时,可以减小目标队列深度,以及为了增加吞吐量,当每个工作负载的目标等待时间大于每个计算的等待时间值时可以增加目标队列深度。
在Kahn等人的题为“Adaptive Throttling for Fiber Channel Disks”的US6,636,909B1中,公开了一种向磁盘发送写请求并且如果磁盘队列已满则响应于从磁盘接收到队列已满信号来设定抑制值的方法。该方法试图通过在本地软件磁盘驱动器队列中对将使存储装置过载的命令进行排队来避免触发存储装置的队列已满状态。由于对命令发布的预定限制不可行,取而代之的是发起者装置必须能够识别可能的错误产生情形并且之后限制或抑制发出的命令数。因此,通过向磁盘发送写请求,如果磁盘队列已满则从磁盘接收队列已满信号,以及响应于接收设定抑制值的队列已满信号并且之后动态地调整抑制值以将存储装置维持在稳定状态,由此操作该方法。
在Gaertner等人的题为“Disc Drive Data Storage System andMethod for Dynamically Scheduling Queued Commands”的US6,170,042B1中,公开了一种对命令进行调度的数据存储系统和方法,其中将命令存储在命令类型队列和调度的命令队列中。对在命令类型队列中的命令进行归类并且分配一个优先级。最后,将命令类型队列中的命令传送到调度的命令队列,其中在不进一步归类的情况下,执行调度的命令队列中的命令。根据命令类型队列的队列深度和表示执行调度的命令队列中命令的速率的命令执行速率值,确定所期望的调度的命令队列的队列深度或大小。使用命令类型队列的队列深度和命令执行速率值作为对查找表的输入,可以动态地确定所期望的队列深度。数据存储系统可以包括执行来自主机系统的命令的小计算机系统接口(SCSI)盘驱动。
这些美国专利和美国专利公开没有针对上述的特定问题,并因而不提供对这些问题的解决方案。

发明内容
根据本发明的目前优选的实施例,可以克服上述以及其他问题并实现其它优点。
根据计算机程序产品、设备和方法,提供一种冗余网络,其中通过结合相关联的存储多路径装置输入/输出(I/O)等待队列,监测多路径存储网络的条件以及控制存储多路径装置驱动器,主计算机与至少一个存储装置操作,以在I/O需求增加时增加对诸如磁盘装置驱动器的存储装置驱动器的I/O吞吐量,以及在I/O错误条件的情况下减少对存储装置驱动器的I/O吞吐量。


通过结合附图阅读以下对优选实施例的详细描述,可以使本发明的前述以及其它方面更加明白,其中图1是适于实施本发明的存储区域网(SAN)系统的框图;以及图2是说明根据本发明的示例性实施例的方法的逻辑流程图。
具体实施例方式
图1是适于实施本发明的存储区域网(SAN)系统10的框图。该SAN系统10包括主机12,其经由至少一条总线,这里也称作电缆或数据路径14,耦合到至少一个存储装置,诸如磁盘驱动器16。该主机12可以是计算机,诸如大型计算机、工作站、个人计算机或任何类型的计算装置。该磁盘驱动器16实际上可以包括多个磁盘驱动器,诸如磁盘驱动器阵列15,并且可以实施为廉价磁盘冗余阵列(RAID)。可以有一个磁盘驱动控制器19来整体负责将数据存储在磁盘驱动器16中以及从磁盘驱动器16中读取数据。路径14可以为光纤信道(FC)型总线,并且可以实现SCSI型接口。路径14的确切属性和/或路径协议的种类与实施本发明的示例性实施例没有太大关系。
为了描述本发明的示例性实施例的目的,假设主机12包括存储多路径装置驱动器(SMDD)12A,其与存储多路径装置I/O等待队列12B一起操作。进一步假设主机12包括磁盘装置驱动器(DDD)18A,其与磁盘装置驱动器I/O等待队列18B一起操作。
存储多路径装置驱动器12A和磁盘装置驱动器18A中的一个或其二者都可以使用执行存储的软件程序的数据处理器、或者具有硬件逻辑单元的数据处理器、或者具有软件程序和硬件逻辑单元的组合的数据处理器来实现。I/O等待队列12B和18B可以使用任何合适类型的读/写存储器诸如半导体随机访问存储器(RAM)来实现。
可以假设主机12包括或者耦合到至少一个应用(APP),并且更典型地包括或者耦合到多个应用(APP1,APP2,...,APPn),其中至少一些应用经由存储多路径装置驱动器12A执行基于磁盘的I/O。典型地,存储多路径装置驱动器12A经由操作系统13耦合到应用(APP1,APP2,...,APPn)。
为了本发明的目的,可以将总线14看作是路径,并且实际上在主机12和存储装置之间可以有多条路径(即,多路径)。这可以使用耦合到至少两条路径以及耦合到交换结构20的至少一个主机适配器(HA)12C来实现,从该交换结构20,多路径发散到存储装置。在主机12和存储装置之间多路径的使用提供了冗余并且避免产生单点故障(POF)。通过使用多个路径14,SAN 10可以看作是冗余SAN。假设存储多路径装置驱动器12A知晓将主机12连接到存储装置16的各种路径14的操作状态。另一个HA 12C可以用于直接地或者经由另一个交换结构(未示出)耦合到另外一个或多个存储装置22。
通过示例,每一个磁盘驱动器可以有十个存储装置LUN(逻辑单元数),并且到每个LUN可以有八条路径14。
根据本发明的示例性实施例,通过在存储多路径装置驱动器12A级别上向工作负载管理添加智能来解决上述问题。和使用与工作负载变化无关的恒定深度的I/O等待队列12B相反,存储多路径装置驱动器12A根据工作负载的变化,动态地调整发送到磁盘装置驱动器18A的I/O的量。该技术有助于在正常(非错误)操作和错误恢复操作的各种条件下,平衡存储多路径装置驱动器I/O等待队列12B以及磁盘装置驱动器I/O等待队列18B的长度。
通过使用本发明的示例性实施例,当来自应用的需求增加时,I/O吞吐量增加,因而避免性能下降并且防止由存储多路径装置驱动器12A执行的队列深度控制所引起的系统悬置。在I/O故障的情况下,存储多路径装置驱动器12A敏感于该变化并且有效地将发送到磁盘装置驱动器18A的I/O量“调谐”为较小值,以防止在磁盘装置驱动器18A级别上的I/O悬置或性能下降,因为通常将会对每个I/O请求进行多次重试。
在存储多路径装置驱动器12A级别上,对于在I/O等待队列18B处排队的每个任务,不与磁盘装置驱动器18A相同程度地执行多次重试(即使执行的话)。一旦特定路径14接收到一些特定数目的连续错误,则使其断开。如果所有的路径14都断开,则存储多路径装置驱动器12A会将I/O等待队列12B上的所有I/O请求返回到应用,而不进行任何重试。因此,存储多路径装置驱动器12A通常不会遇到与磁盘装置驱动器18A相同的在错误恢复过程期间的性能下降。
通过在存储多路径装置驱动器12A中添加智能,变得能够动态地感知和响应变化的I/O量以及I/O错误的发生,使得有效地处理正常或良好条件以及错误条件两者。可以在任何平台上,通过使用I/O队列12B的队列深度以动态地控制I/O流,利用任何存储多路径装置驱动器来实施本发明的非限定性实施例。
为了实现本发明的示例性实施例,建立一组规则来控制I/O流,以便于避免繁重I/O和/或错误恢复期间的性能下降和/或系统悬置。至少考虑以下要素来建立该组规则(a)由存储装置控制器19(例如,磁盘驱动器16的控制器)推荐的队列深度值;(b)当存储多路径装置驱动器12A开始经历繁重I/O(大量)条件期间的性能下降时,存储多路径装置驱动器I/O等待队列12B的长度(其中所有未处理的I/O请求进行排队);(c)当磁盘装置驱动器18A开始经历错误恢复期间的性能下降时,磁盘装置驱动器I/O等待队列18B的长度;以及(d)当错误恢复期间开始经历性能下降时由存储多路径装置驱动器12A用来控制到磁盘装置驱动器18A的I/O流的队列深度的系数。
在确定了以上要素之后,存储多路径装置驱动器12A使用这些要素来实现以下逻辑。还参考图2的逻辑流程图。
在正常条件期间,在块A处,存储多路径装置驱动器12A使用以下公式来计算发送到磁盘装置驱动器18A的I/O量发送到装置上的磁盘装置驱动器18A的I/O总量=队列深度×用于队列深度的全局系数×功能路径的总数;其中用于队列深度的全局系数=1。注意,优选地,用于队列深度的全局系数为由所有多路径存储装置16所使用的队列深度值的系数。
“正常条件”可以看作是一个其中不存在繁重I/O和/或错误条件的情况。这里采用的“繁重I/O”可以看作是应用初始存储装置活动量,其超出正常活动量某个预定量。该预定量可以是固定的或者可以是根据系统条件可变的。例如,在装有主机12系统的AIXTM操作系统13(AIXTM是一个开放操作系统,基于UNIXTM,可从本专利申请的受让人那里获得)上,以下表定义了用于该实现的适当规则(n为I/O请求数)等待队列的长度用于队列深度的全局系数(用于所有存储装置)n>=1200 3800<n<1200 2n<8001例如,如果I/O等待队列12B上的I/O请求数为1100,则由存储多路径装置驱动器12A使用上述公式执行的计算使用针对用于队列深度的全局系数为2的值。
在繁重I/O环境中,以及在块B处,存储多路径装置驱动器12A监测I/O等待队列12B的长度并且相应地调整用于队列深度的全局系数值以允许更多的I/O发送到磁盘装置驱动器18A。
在错误条件中,在块C处,存储多路径装置驱动器12A监测功能路径数并且相应地调整用于队列深度的单个系数以减少发送到磁盘装置驱动器18A的I/O量。如果多路径装置的功能路径的百分比(这里称作m)降低到小于100%,则存储多路径装置驱动器12A从使用用于正常或繁重I/O条件的全局系数转换为该磁盘16的单独系数,用于控制在错误条件期间的队列深度。
例如,再次假设安装在主机12上的AIXTM操作系统13的非限定性情况,以下说明用于该实现的适当规则如果50%<m<100%,则给出由(f)指示的用于队列深度的单独系数(每个多路径装置)如下如果用于队列深度的全局系数>=2,则f=用于队列深度的全局系数-1;否则如果m<=50%,则f=1。
例如,在示例性情况中假设到存储装置16的路径总数为八,功能路径数为六,并且假设用于队列深度的全局系数为三。在这种情况下,满足50%<m<100%的条件。因此,由存储多路径装置驱动器12A执行以下计算发送到磁盘装置驱动器18A的I/O总量=队列深度×(用于队列深度的全局系数-1)×功能路径总数。
基于上述讨论,应理解到,通过在存储多路径装置驱动器12A中实现所述方法,可以启动该存储多路径装置驱动器12A,以基于工作负载以及I/O错误的存在与否,来动态地调整到磁盘装置驱动器18A的I/O流,以避免在繁重I/O和错误条件下的性能下降或系统悬置。
本发明的示例性实施例的特征在于,可以对应于I/O条件来调整在主机12和存储装置16之间的带宽,以避免在存储多路径装置驱动器12A或磁盘装置驱动器18A处产生瓶颈。
本发明的示例性实施例的另一特征在于,在非错误条件期间(包括繁重I/O条件期间)避免了存储多路径装置驱动器12A的过载,并且在错误条件期间避免了磁盘装置驱动器18A的过载。
以上描述已经通过示例性且非限定性示例对本发明的实施例提供了全面而有益的描述。但是,对于相关领域技术人员而言,通过结合附图以及所附的权利要求书阅读以上描述,各种改变和修改会变得显而易见。例如,尽管将存储装置描述为了耦合到磁盘装置驱动器18A的磁盘驱动器16,但在其他实施例中,可以使用其他类型的存储装置,诸如磁带存储装置和基于半导体存储器的存储装置。DDD 18A因而可以被更一般地称作存储装置驱动器,以及相关联的I/O队列18B可以被更一般地称作存储装置驱动器I/O等待队列。另外,磁盘驱动器15可以基于磁技术或者光技术,并且可以使用固定的或者可移动的存储介质。更进一步,可以理解到,SMDD 12A可以响应于多个不同的错误条件,诸如在磁盘驱动器16、磁盘驱动控制器19、交换结构20和/或HA 12C中的一个或多个中产生的错误。另外在这方面,如果希望的话,可以根据错误源来调整由SMDD 12A执行的错误条件处理,因而在本质上是自适应的。但是,对本发明教导的所有这样的修改仍将落在本发明的实施例的范围内。
此外,在不对其他特征进行对应使用的情况下,本发明实施例的一些特征可以用来产生有益效果。这样,以上描述应看作是仅用于说明本发明的原理、教导和实施例,而不对其进行限制。
权利要求
1.一种用于在冗余存储网络中与至少一个存储装置一起操作主机的方法,包括监测所述冗余存储网络的操作;以及结合相关联的存储多路径装置输入/输出(I/O)等待队列,操作存储多路径装置驱动器,以当I/O需求增加时增加到存储装置驱动器的I/O吞吐量,以及在I/O错误条件的情况下减少到所述存储装置驱动器的I/O吞吐量。
2.如权利要求1所述的方法,其中在正常I/O操作条件期间,操作所述存储多路径装置驱动器包括使用下列公式计算发送到所述存储装置驱动器的I/O量发送到存储装置驱动器的I/O总量=队列深度×用于队列深度的全局系数×功能路径的总数,其中用于队列深度的全局系数=1。
3.如权利要求2所述的方法,其中在繁重I/O操作条件期间,操作所述存储多路径装置驱动器包括监测所述I/O等待队列的长度以及相应地调整所述用于队列深度值的全局系数,以允许更多的I/O被发送到所述存储装置驱动器。
4.如权利要求2所述的方法,其中在错误条件期间,操作所述存储多路径装置驱动器包括监测所述功能路径数以及对应地调整用于队列深度的单独系数,以减少发送到所述存储装置驱动器的I/O量,其中当功能路径的百分比降低到小于100%时,则所述存储多路径装置驱动器从使用所述用于队列深度值的全局系数转换为使用存储装置用于控制I/O等待队列深度的单独系数。
5.如权利要求1所述的方法,其中所述至少一个存储装置包括磁盘存储装置。
6.一种包括冗余存储网络的系统,所述冗余存储网络包括经由多条路径耦合到至少一个存储装置的主机,所述主机包括与存储多路径装置输入/输出(I/O)等待队列耦合的存储多路径装置驱动器,所述存储多路径装置驱动器耦合到包括存储装置驱动器I/O队列的存储装置驱动器,所述存储多路径装置驱动器可操作用于监测所述冗余存储网络的条件,以当I/O需求增加时增加到所述存储装置驱动器的I/O吞吐量,以及在I/O错误条件的情况下减少到所述存储装置驱动器的I/O吞吐量。
7.如权利要求6所述的系统,其中在正常I/O操作条件期间,所述存储多路径装置驱动器使用下列公式计算发送到所述存储装置驱动器的I/O量发送到存储装置驱动器的I/O总量=队列深度×用于队列深度的全局系数×功能路径的总数,其中用于队列深度的全局系数=1。
8.如权利要求7所述的系统,其中在繁重I/O操作条件期间,所述存储多路径装置驱动器监测所述I/O等待队列的长度,并相应地调整所述用于队列深度值的全局系数,以允许更多的I/O被发送到所述存储装置驱动器。
9.如权利要求7所述的系统,其中在错误条件期间,所述存储多路径装置驱动器监测所述功能路径数,并对应地调整用于队列深度的单独系数,以减少发送到所述存储装置驱动器的I/O量,其中当功能路径的百分比降低到小于100%时,则所述存储多路径装置驱动器从使用所述用于队列深度值的全局系数转换为使用存储装置用于控制I/O等待队列深度的单独系数。
10.如权利要求6所述的系统,其中所述至少一个存储装置包括磁盘存储装置。
11.一种包括多路径接口的主机,所述多路径接口用于经由多条路径耦合到至少一个存储装置,所述主机包括存储多路径装置驱动器,所述存储多路径装置驱动器包括存储多路径装置输入/输出(I/O)等待队列,所述存储多路径装置驱动器耦合到包括存储装置驱动器I/O队列的存储装置驱动器,所述存储多路径装置驱动器可操作为当I/O需求增加时增加到所述存储装置驱动器的I/O吞吐量,以及在I/O错误条件的情况下减少到所述存储装置驱动器的I/O吞吐量。
12.如权利要求11所述的主机,其中在正常I/O操作条件期间,所述存储多路径装置驱动器使用下列公式计算发送到所述存储装置驱动器的I/O量发送到存储装置驱动器的I/O总量=队列深度×用于队列深度的全局系数×功能路径的总数,其中用于队列深度的全局系数=1。
13.如权利要求12所述的主机,其中在繁重I/O操作条件期间,所述存储多路径装置驱动器监测所述I/O等待队列的长度,并相应地调整所述用于队列深度值的全局系数,以允许更多的I/O被发送到所述存储装置驱动器。
14.如权利要求12所述的主机,其中在错误条件期间,所述存储多路径装置驱动器监测所述功能路径数,并对应地调整用于队列深度的单独系数,以减少发送到所述存储装置驱动器的I/O量,其中当功能路径的百分比降低到小于100%时,则所述存储多路径装置驱动器从使用所述用于队列深度值的全局系数转换为使用存储装置用于控制I/O等待队列深度的单独系数。
15.如权利要求11所述的主机,其中所述至少一个存储装置包括磁盘存储装置。
16.一种包括计算机可用介质的计算机程序产品,包括计算机可读程序,其中通过根据前述方法权利要求中的任一方法的操作,当在所述计算机上执行所述计算机可读程序时,使所述计算机在冗余存储网络中与至少一个存储装置一起操作。
全文摘要
根据计算机程序产品、设备和方法,提供一种冗余网络,其中主机计算机通过以下操作而与多个存储装置一起操作监测多路径存储网络的条件,并结合相关联的存储多路径装置输入/输出(I/O)等待队列,控制存储多路径装置驱动器,以当I/O需求增加时增加到存储装置驱动器的I/O吞吐量,以及在I/O错误条件的情况下减少到存储装置驱动器的I/O吞吐量,其中存储装置驱动器诸如磁盘装置驱动器。
文档编号G06F3/06GK1916833SQ20061010836
公开日2007年2月21日 申请日期2006年8月2日 优先权日2005年8月17日
发明者沈孜蕾, 萧丽梅, 龚雅湄, 曾嵘 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1