存储子系统的合并操作的系统和方法

文档序号:6554469阅读:160来源:国知局
专利名称:存储子系统的合并操作的系统和方法
背景技术
在一些系统中,多个主机执行对冗余存储子系统的写事务(“写操作”)。冗余存储子系统通常包括一个或多个能够以冗余方式存储数据的存储装置。例如,可以将两个或多个存储装置配置成实现数据“镜像”,其中将相同的数据写入每一个镜像的存储装置。
然而,如果主机在对各种冗余配置的存储装置执行多个写操作时失败的话,就出现了问题。一些存储装置可能接收到新的写数据,而其它存储装置由于主机失败而可能没有接收到。可以执行称为“合并”的过程以便随后使各种冗余配置的存储装置上的数据一致。虽然为了保证冗余配置的存储子系统上的数据完整性,合并过程是必需的,但该过程是耗时且通常是不期望的。


为了详细说明本发明的示例性实施例,现在将参照附图,其中图1示出依照本发明不同实施例的具有与存储子系统耦合的多个主机的系统,每个主机都存储状态信息;图2示出依照本发明不同实施例的主机的框图;图3示出依照本发明不同实施例在至少一个主机中实现的方法;图4示出依照本发明不同实施例在至少一个主机实现的用于判断是否执行合并操作的另一种方法;和图5示出系统的一个替代实施例,其中一部分主机维持系统信息。
符号和命名在下面的说明书和权利要求中始终使用确定术语指代特定的系统组件。本领域技术人员将理解计算机公司可能用不同的名称来指代一个组件。这篇文献不想区分名称上不同而非功能上不同的组件。在下面的论述中以及在权利要求中,术语“包含”和“包括”都是以无约束的方式使用的,因而应该解译为“包括但不限于......”的含义。此外,术语“耦合”是意指间接或直接电连接的含义。因此,如果第一装置耦合到第二装置,则可以通过直接电连接来连接,或者也可以通过经由其它装置和连接的间接电连接进行连接。
具体实施例方式
图1示出包括多个主机的系统10,所述主机通过通信链路60与存储子系统40相耦合。在图1的实施例中,所述系统10包括五个主机,即主机12、14、16、18和20,不过在其它实施例中也容许任何超过一的主机数目(也就是说,两个或更多的主机)。每个主机12-20都包括适合于从存储子系统读数据和向存储子系统写数据的计算机。每个主机都包括用于存储“状态信息”的存储器,下文中将解释其使用。主机12包括状态信息22,而主机14、16、18和20分别包括状态信息24、26、28和30。五个主机12-20利用通信链路25来发送和接收消息。
所述存储子系统40包括多个冗余配置的存储装置。在图1的实施例中,所述存储系统包括四个存储装置42、44、46和48,不过不同数目(两个或更多)的存储装置在其它实施例中是容许的。每个存储装置都可以包括任何合适类型的非易失性存储器。示例包括硬盘驱动器和光学读/写驱动器。为每个存储装置提供控制器以控制对相关联的存储装置的访问。所以,控制器50、52、54和56分别与存储装置42、44、46和48相关联。
在图1的实施例中,每个主机12-20都配置成能对不同的存储装置42-48执行冗余写事务(“写操作”)。例如,当主机12对存储子系统40执行写操作时,主机12对每个存储装置42-48都执行写操作以接收数据。由于所有四个存储装置42-48都是冗余配置的,因而主机12以及其它主机都对四个存储装置中的每一个执行写操作。通信链路60说明了每个主机都与四个存储装置中的每一个相耦合。除图1中示出的以外,不同的体系结构和配置是可能的。
存储系统的冗余配置可以是任何合适的配置。示例性的配置包括独立磁盘冗余阵列(“RAID”)配置,比如RAID0、RAID1+0、RAID1等等。适当配置的示例可以在美国专利号6,694,479和6,643,822中找到,这两篇文献都在此引入作为参考。对这个公开的范围来说,冗余存储配置的特定类型是不重要的。
依照本发明的不同实施例,图1中的每个主机都通知每个其它主机关于与该通知主机相关联的状态。与每个主机相关联的状态信息通常表示那个主机是否可以对存储子系统40执行写操作。至少两种状态是可能的。在第一种状态中,主机阻止它自己对存储子系统40执行写操作。在这种状态下,主机可能具有或可能不具有任何要写入到存储子系统的数据,但是无论如何,主机都会阻止它自己执行写操作。这第一种状态也称为“非等待写”(“NPW”)状态。在第二种状态中,主机可以对存储子系统执行写操作。在这种状态下,主机可能实际上具有或不具有要写入到存储子系统的数据,但是如果主机有数据要写则主机能够执行写事务。这第二种状态也称为“等待写”(“PW”)状态。
第一主机依照任何适当的技术来通知另一个主机关于第一主机的状态。例如,第一主机能够经由通信链路25向其它主机发送消息。所述消息可以包含表示第一主机的状态(PW或NPW)的状态指示符值。在一些实施例中,可以使用预定义消息通过通信链路25传送状态信息。在其它实施例中,所述状态信息可以作为其它消息的一部分加以传送。在又一些实施例中,可以使用单独的消息传送状态变化(从PW到NPW,反之亦然)。再者,可以发布预定义的“开始NPW”和“停止NPW”消息以向其它主机传送状态信息。
在图1的实施例中,每个主机都确定其状态(PW或NPW)并并该状态通知其它主机。例如,主机12可以将其状态确定为PW并由此通知其它主机,即主机14-20。其它主机14-20根据主机12所报告的PW状态而判定主机12可能正在执行写操作或者可以在将来执行写操作。实际上,主机报告其状态为PW是表示该主机可能进行写操作。换句话说,其它主机不能依靠PW主机不对存储子系统执行写操作。然而,主机12可以将其状态确定为NPW并将这个状态通知给其它主机。其它主机根据主机12所报告的NPW状态而判定主机12没有执行写操作并且在NPW状态中也将不会执行任何写操作。实际上,主机12的NPW状态是主机12表示其不会对存储子系统40执行任何写操作,直到主机12首先将其状态变回到PW、通知其它主机其状态变回到PW并且接收到其它主机对其状态变化的确认为止。当主机12为NPW状态时,其它主机能够信任主机12不会对存储子系统执行写操作。通过通信链路25从一个主机向其它主机传送状态信息,所述通信链路可以是任何适当类型的总线或其它通信链路。
系统10中的每个主机都将其状态传送给其它主机。当每个主机改变其状态,例如从PW改为NPW或从NPW改为PW时,可以执行主机信息的传送。至少在一些实施例中,每个主机12-20维持本主机和系统中其它主机的状态信息并且因此不同主机之中的所有状态信息22-30都是相同的。在其它实施例中,特定主机的状态信息不必具有该特定主机的状态,而是仅仅具有按上述方式传送来的与其它主机相关联的状态信息即可。
可以以诸如位映像之类的数据结构来维持状态信息。位映像中的每一位都对应于特定的主机,并且表示那个主机的状态。位值“0”可以表示PW状态,而位值“1”可以表示NPW状态,或反之亦然。可以为每个主机使用多个位来编码该主机的状态。
如上所述,每个主机12-20都包含表示系统中主机的写状态的状态信息。另外,当一个主机失败时,其余工作的主机被通知所述失败,或者检测出所述失败,并且根据状态信息每个主机都能够判断失败的主机在失败时是PW状态还是NPW状态,从而判断是否要执行合并以保证存储子系统中的数据一致性。可以使用多种技术中的任何一种技术通知主机或者由主机检测其它主机的失败。例如,可以在所有主机之间交换定期的“保持活跃”消息。当特定主机停止传送“保持活跃”消息达到预定的一段时间,就认为它失败了。
举例来说,如果主机12失败,则主机14就能够判断或被通知主机12的失败并随后检查主机14中所含的状态信息24。根据所述状态信息24,主机14判断失败的主机12在失败时是PW状态还是NPW状态。推测起来,记录在状态信息24中的最后一个状态反映出主机12在其失败时的状态。如果失败的主机12在其失败时是PW状态,则主机14就判定应该执行合并操作以保证数据一致性。然而,如果失败的主机12在其失败时是NPW状态,则主机14就判定不必执行合并操作。在后一种情况下,因为主机12在失败时没有正在向存储子系统40写数据,所以主机12不会导致一个或多个存储装置与一个或多个其它存储装置相比被写入了不同的数据。因此,主机14判定不需要合并操作。在一些实施例中,每个主机(即,主机12-20)都检查它自己的状态信息以判断是否要执行合并操作。在这后一种实施例中,当所有工作的主机(在上面的示例中是14-20)判断不需执行合并过程时,所述系统10避免合并过程。如果一个主机判定需要合并过程,则实施合并过程。可以实施任何不同的合并技术,比如在美国专利号5,239,637的专利中公开的合并技术,将该篇文献在此引入作为参考。
现在参照图2,主机12包括处理器70、存储器72、接口74和76以及桥78。如图所示,所述处理器70、存储器72以及接口74、76全部都与桥78相耦合。每个其它主机14-20都可以具有与图2中所示的相同或相似的体系结构。所述存储器72包含一个或多个数据结构和/或可执行应用程序。一个这样的数据结构包括如上所述的状态信息22。软件80包括可以在主机12的处理器70上运行的一个或多个应用程序。任何软件应用程序都可能需要与所述存储子系统40相关的写和/或读操作。所述软件80还可以包括令处理器70和主机执行这里所述的一个或多个功能的可执行代码。
现在参照图3,提供了一种可在任何一个或所有主机12-20上执行的方法100。从102开始,假定主机为PW状态。在102,主机判断是否有任何写操作正在等待对存储子系统40执行。如果有等待的写操作,则在104主机继续在它的当前状态(在图3中假定为PW状态)中操作,如果主机没有将要对存储系统执行的等待写操作,则控制进行到106。可以使用任何适当的技术来判断是否有任何写操作在等待。例如,可以设置时间阈值并且如果已经经过对应于该时间阈值的时间段而主机没有对存储子系统执行任何写操作,则所述主机就能够判定没有等待的写操作。作为选择,可以例如在缓冲器中保存指针以掌握等待的写操作的进展情况。如果指针达到表示缓冲区中不再有等待的写操作的值时,则所述主机可以判定没有等待的写操作。
如果没有等待的写操作,则在106主机向系统20中的一个或多个其它主机发送NPW消息并且其它主机可以以对NPW消息的确认来作出响应。在108,主机更新它自己的状态信息以反映它的状态现在是NPW状态。所述主机然后在110判断它是否具有将要执行的任何等待的写操作。如果没有等待的写操作,则主机继续在NPW状态中操作(112)。所述主机反复地检查以判断它是否具有任何写操作等待执行,并且当有写操作在等待(例如,依照上述技术)时,控制进行到114,在此时主机向系统10中的一个或多个其它主机发送PW消息。在116,所述主机再次更新它的状态信息以反映所述主机现在是PW状态。在一些实施例中,主机更新其状态信息是在接收到对发送给其它主机的PW消息的确认后进行的。控制循环回到判定步骤102并且控制如上所述继续进行。依照至少一些实施例,主机不会报告从PW到NPW的状态变化,直到所有早先对存储子系统40进行的写操作都已经成功完成为止。
因此,图3提供这样一种方法,其中每个主机都保持在PW状态中直到所述主机根据任何期望的标准判定该主机没有写操作等待执行为止。当主机判定它没有等待的命令时,该主机将其状态变换为NPW状态并且通知其它所有主机其状态转换。在其它主机确认这一状态转换之后,所述主机然后继续在NPW状态中操作直到该主机有一个或多个写操作等待执行为止,此时该主机变回到PW状态并且通知其它主机该状态转换。在图1的实施例中,所有主机12-20都执行图3的方法,并且因此每个主机都被通知系统中所有其它主机的状态。
图4示出描述系统10当一台主机失败时的反应的方法120。方法120是由系统10中的一个或多个其余主机(即,非失败的主机)执行的。在122,所述主机被通知或检测到失败主机的失败。在124,主机搜索其状态信息以判断失败的主机在发生失败时是否是PW状态。在126,所述主机判断失败的主机的状态。如果主机判定失败的主机失败时是PW状态,则控制进行到130,在其中执行合并操作或令合并操作被执行。然而,如果失败的主机在失败时不是PW状态(即,主机处于NPW状态),则控制进行到128,在其中阻止合并操作。如上所述,在一些实施例中,所有非失败的主机都可以执行图4的方法120。在其它实施例中,不是所有剩余的、非失败的主机都执行方法120。
仍在工作的每一个主机执行图4的方法120。在一些实施例中,所有工作的主机必须达成相同的结论,即是否要执行合并操作。如果无法达成一致,则执行默认响应。所述默认响应可以是执行合并。尽管耗费时间,但是合并保证了数据完整性。当一台主机断定需要执行合并,该主机经由链路25向其它主机发送消息以便通知其它主机。如果所有其它主机意见一致认为需要执行合并,则依照不同的实施例,选择首先在链路25上报告需要进行合并的主机作为实际执行所述合并的主机。可以在链路25上以任何适当的方式在各主机之间来回地传送消息,以便最终选出控制合并操作的主机。例如,断定要进行合并的第一主机向其它主机发送表明这一点的消息。当其它各主机都赞同那个估计,其在链路25上响应,回复其相同意见并且确认允许第一主机作为执行合并的主机。一旦第一主机接收到所有这样的响应,并且所有响应都同意第一主机的结论,所述首先发信号通知需要执行合并的主机启动合并操作。
在其它实施例中,不需要全部主机同意对失败主机的响应(合并或不合并)。然而,主机之间的一致有助于确保关于是否执行合并这一决策过程的统一性。例如,如果只有单个主机作出这种判断而且该主机在执行图4的方法120时失灵的话,则可能做出错误决策或者根本没有做出决策。尽管如此,本发明的实施例允许少至一个或者多至所有的工作主机执行方法120。
现在参照图5,图5示出了系统200,其如图1中所示也包括与存储子系统40相耦合的多个主机12-20,所述存储子系统包括多个存储装置42-48。为了说明起见,假定只有主机12和14包含状态信息。主机12包含状态信息22,而主机14包含状态信息24。其余主机,即主机16、18和20不包含状态信息。图5示出了上述的其中不是所有主机包含状态信息的实施例。在图5的示例中,五个主机中的两个具有状态信息。一般而言,只有一个或多个主机维持并存储状态信息。
在图5的实施例中,主机16、18和20中的每一个都通知主机12和14中的每一个关于主机16、18、20的状态。另外,主机12通知主机14关于主机12的状态,同样,主机14通知主机12关于主机14的状态。因此,依照图5的示例,主机12和14中的每一个被通知所有五个主机的状态,而主机16、18和20没有被通知所有五个主机的状态,甚至是任何主机的状态。如果主机16、18和20之一失败的话,则如上所述,具有所有五个主机的状态信息的主机12和14中的一个或者两者能够判断是否需要执行合并操作。如果主机12或14失败,则剩余的工作主机12或14判断是否需要合并操作。此外,即使那些不维持状态信息的工作主机(即,主机16、18、20)也可以判断是否执行合并,但是必须首先从主机12或14那里获取状态信息。
至少,一个主机维持系统的状态信息以判断当主机失败时是否需要合并操作。然而,如上所述的那样,如果只有一个主机维持状态信息而且该特定的主机是失败的主机,则如上所述该系统就不会具有判断是否需要合并操作的能力。然而,在这类实施例中,如果维持状态信息的唯一主机是失败的主机,则该系统能够通过总是执行合并操作来作出反应。通过让至少两个主机维持状态信息,那么如果任何一个主机失败的话,则仍然留有至少一个主机来判断是否需要合并操作。与图1中五个主机向其它每一个主机报告状态信息的实施例相比,图5中的不是全部的主机维持状态信息的实施例有利地在通信链路25上产生较少的通信量。维持状态信息的主机可以是可编程的或由系统设计员设置的。
在一些实施例中,在存储子系统作为单个逻辑卷(logicalvolume)工作的情况下,每个主机维持整个存储空间的PW/NPW状态。在其它实施例中,存储子系统是作为多个逻辑卷工作的。在这些后者的实施例中,每个主机都独立地相对于一个或多个而非所有逻辑卷来维持它自己的PW/NPW状态。照此,可以相对于一个或多个而非所有逻辑卷来作出是否执行合并操作的判断以及执行合并操作本身。例如,可以将每一种状态应用于单个逻辑卷,并且相对于该单个逻辑卷来进行合并操作的判断和执行。
以上论述意在说明本发明的原理和不同的实施例。只要充分地领会上述公开内容,则许多的变形和修改对于本领域的技术人员而言将变得显而易见。意在将下列权利要求理解为包含所有这类变形和修改。
权利要求
1.一种系统(10),包括耦合在一起的多个计算机(12-20),包括第一计算机(12)和一个或多个其它计算机(14-20),所述多个计算机中的每一个都存储和维持状态信息(22-30);和存储子系统(40),其与所述多个计算机(14-20)中的每一个相耦合;其中所述第一计算机(12)向至少一个其它计算机报告与该第一计算机相关联的状态,并且当所述第一计算机失败时,至少一个其它计算机根据当第一计算机失败时第一计算机的最后报告状态来判断是否要在所述存储子系统(40)上执行合并操作,所述合并操作保证所述存储子系统上的数据一致性。
2.根据权利要求1所述的系统,其中所述第一计算机(12)通过向至少一个其它计算机发送消息来向所述至少一个其它计算机报告状态,所述消息包括状态指示符,所述指示符表示等待写(“PW”)状态和非等待写(“NPW”)状态,所述PW状态表示第一计算机可以执行对所述存储子系统(40)的写操作,而所述NPW状态表示第一计算机不会执行对所述存储子系统的写操作。
3.根据权利要求1所述的系统,其中多个计算机中的每一个都包括适合于包含所述系统中其它计算机的状态信息的状态信息数据结构,所述状态信息表示每一个所述计算机是否处于对所述存储子系统执行写操作的状态。
4.根据权利要求1所述的系统,其中所述多个计算机中的至少一个计算机包括适合于包含所述系统中至少一个其它计算机的状态信息的状态信息数据结构,所述状态信息表示与该状态信息相关联的计算机是否处于对所述存储子系统执行写操作的状态。
5.根据权利要求1所述的系统,其中所述存储子系统(40)包括多个可冗余操作的存储装置(42-48),每个存储装置都与所述多个计算机中的每一个相耦合。
6.根据权利要求1所述的系统,其中所述存储子系统(40)包括多个逻辑卷并且其中将由第一计算机(12)所报告的状态提供给一个或多个而非所有的所述逻辑卷。
7.根据权利要求6所述的系统,其中至少一个其它计算机判断是否要在一个或多个而非所有的所述逻辑卷上执行合并操作。
8.一种在第一计算机中实现的方法,包括当另一个计算机失败时,在第一计算机中搜索(124)状态信息,所述状态信息表示是否至少一个其它计算机处于允许对冗余存储子系统的写事务发生的状态;以及根据所述状态信息判断(126-130)是否在冗余存储子系统上执行合并过程。
9.根据权利要求8所述的方法,还包括如果失败的计算机处于阻止对冗余存储子系统的写事务发生的状态下,则阻止(128)合并过程的发生。
10.根据权利要求8所述的方法,其中判断是否执行合并包括根据分别属于各逻辑卷的状态信息判断是否在冗余存储子系统的多个逻辑卷之一上执行合并。
全文摘要
第一计算机(12)适合与另一个计算机(14-20)通信,以及与位于第一计算机之外的冗余存储子系统(40)通信。第一计算机包括包含状态信息(22)的存储器(42)和从另一个计算机中接收状态的处理器(20)。所接收的状态表示所述其它计算机是否可以对冗余存储子系统执行写事务。第一计算机的处理器还根据在其它计算机失败之前接收到的该计算机的最后状态判断是否对冗余存储子系统执行数据合并操作。
文档编号G06F3/06GK1811689SQ20061000627
公开日2006年8月2日 申请日期2006年1月24日 优先权日2005年1月24日
发明者J·J·安德鲁斯基维茨, A·C·戈德斯泰因 申请人:惠普开发有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1