存储事务的制作方法

文档序号:12142054阅读:175来源:国知局
存储事务的制作方法与工艺

许多大规模存储系统被配置为高度可用的、分布式的存储系统。这种存储系统并入高级冗余性以改善所存储数据的可用性和可访问性。例如,集群存储系统可以包括控制多个存储设备的控制器节点的网络。大量的节点可被配置为对相同的存储设备具有访问权,并且节点本身也可以彼此通信耦合以便节点间通信。该配置实现了节点间的负荷平衡和在节点故障情形下的故障转移能力。

附图说明

在下面的具体实施方式中参考附图来对一些示例性实施例进行说明,在附图中:

图1是具有集群定序器的计算机系统的示例的框图;

图2是在具有集群定序器的计算机系统中处理事务的方法的示例的过程流程图;

图3是示出集群定序器故障转移的计算机系统的示例的框图;以及

图4是示出多个集群定序器的计算机系统的示例的框图;以及

图5是示出存储代码的有形的非暂时性计算机可读介质的示例的框图,所述代码被配置为操作具有集群定序器的计算机系统的一个或多个节点。

具体实施方式

本公开提供了用于在计算机系统中同步输入/输出(I/O)事务的技术。事务同步有助于确保事务按正确的顺序发生。例如,在异步存储复制系统中,复制的存储事务要按与原始存储事务发生的相同顺序来处理。否则,会发生存储事务的不对齐,在该情况下复制的状态可能不精确地表示复制的存储系统的原始状态。

在具有多个存储控制器(此处也称为节点)的计算机系统中,两个或更多个节点可能对相同的存储空间具有访问权。在多节点系统中,当节点略微不同步操作或者在不同的时间点访问共享数据时,则会发生事务的不对齐。在一些系统中,通过使用向系统中的所有节点全局广播的同步信息来使I/O事务同步。每一个节点确认同步信息的接收。在所有节点确认了同步信息的接收后,每一个节点随后可被指示继续事务的处理。该过程会是低效的且易于出错,因为其依赖于在能够继续事务的处理之前每一个节点确认新的同步信息的接收。

在本技术的示例中,序列信息以集群序列号的形式发送给节点。集群序列号是顺序递增值,该顺序递增值由主节点内的可编程定时器写入每一个节点。在集群序列号的转换之间,集群序列号转换到障碍值,该障碍值起到在序列号更新期间阻止事务处理的作用。这确保了系统中两个节点将永不具有冲突的序列号。相应地,可以在多个节点之间同步事务,而无需节点确认新的同步信息的接收。下面将结合图1和图2来更全面地描述定序系统的示例。

图1是具有集群定序器的计算机系统的示例的框图。将意识到,图1中所示的计算机系统100仅仅是依照实施例的计算机系统的一个示例。在实际的实现方式中,计算机系统100可以包括各种附加的存储设备和网络,这些附加的存储设备和网络可以任何适合的方式互连,取决于特定实现方式的设计考虑。例如,大型的计算机系统经常具有比在该图示说明中所示的更多的客户端计算机和存储设备。

计算机系统100向任意数量的客户端计算机102提供数据存储资源,该客户端计算机可以是通用计算机、工作站、移动计算设备等。客户端计算机102能够通过网络104与计算机系统100耦合,网络104可以是局域网(LAN)、广域网(WAN)、存储域网(SAN)或其它适合类型的网络。计算机系统100包括存储控制器,本文称为节点106。计算机系统100还包括由节点106控制的存储阵列108。节点106可以统称为计算机集群。为简化起见,仅示出了三个节点。然而,将意识到,计算机集群可以包括任意适合数量的节点,包括2个、4个、6个、10个或更多。

客户端计算机102可以通过发送输入/输出(I/O)请求到节点106来访问存储阵列108的存储空间,该I/O请求包括写请求和读请求。节点106处理I/O请求,使得用户数据被写入存储阵列108中的适合的存储位置或者从存储阵列108中的适合的存储位置读用户数据。如本文所使用的,术语“用户数据”是指人在交易过程中、执行工作职能或用于个人用途时可能使用的数据,例如商业数据和报告、Web页面、用户文件、图像文件、视频文件、音频文件、软件应用或者用户可能希望保存以存储的任何其它相似类型的数据。节点106中的每一个可以与存储阵列108中的每一个通信耦合。每一个节点106还可以通过节点间通信网络110与每一个其它节点通信耦合。

存储阵列108可以包括任何适合类型的存储设备,本文称为驱动器112。例如,驱动器112可以是固态驱动器,例如闪速驱动器(flash drive)、硬盘驱动器和磁盘驱动器,以及其它。此外,计算机系统100可以包括多于一种类型的存储部件。例如,一个存储阵列108可以是硬盘驱动器阵列,而另一存储阵列108可以是闪速驱动器阵列。在一些示例中,一个或多个存储阵列可以具有不同类型的存储的混合。除了图1所示的之外,计算机系统100还可以包括附加的存储设备。

每一个客户端计算机102可以与多个节点106耦合。一个或多个逻辑存储卷可以从存储阵列108中所包含的存储驱动器112中的一个或组合的可用存储空间来提供。在一些示例中,每一个卷可以进一步在区域中划分,并且每一个节点106被配置为控制具体的区域并且在本文称为该区域的所有者。

由客户端计算机102进行的访问存储空间的请求在本文称为事务。事务的类型的示例包括写操作、读操作、存储卷元数据操作和预留请求,以及其它。在一些示例中,客户端计算机102是远程客户端,并且事务是数据的远程复制。通过计算机系统100接收到的每一个事务包括标识要被处理的事务的排序的相关性信息。

每一个节点106可包括其自身的单独的集群存储器114,其用于高速缓存传递到计算机系统100中的其它节点106的数据和信息,包括事务信息、日志信息和节点间通信,以及其它信息。集群存储器可以实现为任何适合的高速缓冲存储器,例如,同步动态随机存取存储器(SDRAM)。节点106中的一个或多个还包括集群定序器116。

为进一步帮助同步事务,事务可以分组成事务集。每一个事务集可以包括任意适合数量的事务,包括数十或数百事务。计算机系统100接收到的每一个事务可以包括标识事务所属的事务集以及事务集之间的相关性(即,处理事务集的顺序)的信息。例如,每一个事务可以包括标识事务集和处理事务集的相对顺序的序列号。

事务集可由生成事务的客户端应用来定义。例如,在远程数据复制应用的情况下,事务集由自其接收了事务的远程系统来定义。计算机系统100被配置为一次处理一个事务集并且按事务集标识符所规定的顺序来处理。以这种方式,观察不同事务集的各个事务之间的相关性。

为确保每一个节点106处理同一事务集的事务,计算机系统100包括集群定序器116,该集群定序器通知每一个节点106哪个事务集当前正在由计算机系统100处理。为了通知每一个节点106哪个事务集当前正在被处理,集群定序器116生成标识符(在本文称为集群序列号),以发送到计算机系统100中的每一个节点106。集群序列号与关联于每一个事务的序列号对应并且用来标识当前由计算机系统100处理的特定的事务集。当前由计算机系统100处理的特定的事务集在本文还称为活跃事务集。

如图1所示,集群定序器116可以位于计算机系统的节点106中的一个上。集群定序器116可以用硬件或硬件和软件的组合来实现。例如,集群定序器116可以实现为逻辑电路,或者由诸如通用处理器的处理器执行的计算机代码、专用集成电路(ASIC)或任何其它适合类型的集成电路。操作集群定序器的节点106在本文称为主节点118。除了主节点118之外的节点106可以称为从节点120。虽然在图1示出了单个集群定序器,但是计算机系统可以包括两个或更多个集群定序器116,其中每一个集群定序器116由无需观察彼此之间的相关性的单独的应用来使用。此外,每一个节点106可被配置为操作集群定序器116。如果主节点118故障,则集群定序器116可以故障转移到节点106中的另一个,该另一个节点则变成新的主节点116。

主节点118可以利用任何适合的通信协议通过节点间通信网络110将集群序号发送到从节点120中的每一个。在一些示例中,主节点118可以通过写入每一个从节点120的集群存储器114的共享部分而将集群序号发送到从节点120。集群序号可以存储在每一个节点106中的一个或多个存储器位置处,存储器位置包括集群存储器114和处理器存储器。

在接收到集群序号时,从节点120可以开始处理活跃事务集的事务,而不等待来自主节点118的任何进一步的通信。集群序号的接收起到标识待处理的活跃事务集的作用并且还允许开始处理事务集。从节点120无需在接收到集群序号后将确认发送到主节点118,或者无需等待来自主节点118的进一步的证实来开始处理活跃事务集。

在一些示例中,集群定序器116以规则的间隔使集群序号递增。递增之间的时间间隔可以由应用来设定并且在初始化阶段确定。为确保每一个事务集结束处理,主节点118可以在使集群序号递增之前等待来自每一个从节点120的指示特定节点结束处理当前事务集的事务的确认。

如果允许两个节点106同时处理两个不同的事务集,则结果会是各个事务之间的相关性的违反。为确保节点106无法同时处理不同的事务集,集群定序器116确保没有两个节点将看到不同的集群序号。为此,通过将来自活跃事务集的集群序号转换到障碍值,例如-1,来开始集群序号到下一事务集的递增。障碍值是阻止节点106处理事务并且不对应于实际的事务集标识符的值。在主节点118已经将障碍值发送到全部节点106之后,主节点118随后可以开始将下一集群序号发送到从节点120中的每一个。由于集群序号被发送到从节点120,不同的从节点120可以具有不同的集群序列值。例如,一些节点106可以具有标识当前事务集的集群序号,而同时其它节点将具有障碍值。然而,由于障碍转换,没有两个节点将同时具有标识不同事务集的集群序号。

图2是在具有集群定序器的计算机系统中处理事务的方法的示例的过程流程图。方法200可以由一个或多个计算设备来执行,例如图1所示的计算机系统100的节点106。

在框202处,计算机系统100正在活跃地处理事务集N,其中N表示活跃序列的数量。在节点106中的每一个处,集群序号已经被设定成活跃序列N,并且每一个节点106正在处理具有与N对应的序列标识符的事务。

在框204处,从节点120中的每一个将确认发送到主节点118以指示活跃序列的全部事务已被处理。每一个从节点120在其对活跃序列的控制下的事务已经结束处理后单独发送其确认。确认可经由节点间通信网络110发送到主节点118。

在框206处,主节点118使得每一个从节点转换到障碍值。在一些示例中,每一个从节点120的集群存储器114包括可由主节点118写的共享存储器的部分,并且主节点118可以将障碍值直接写入共享存储器中的规定地址。在一些示例中,主节点118通过将诸如中断信号的消息发送到从节点120中的每一个而使得每一个从节点120转换到障碍值。在接收到消息时,每一个从节点120通过用障碍值取代集群序号而使得当前的集群序号无效。一旦在特定从节点120上的集群序号转换到障碍值,该从节点120将不处理I/O事务,直至用于该从节点120的集群序号被更新到下一有效的序号,即,与事务集对应的非障碍序号。

在框206处,主节点118使得其上的序号递增。运行于主节点上的应用随后可以读新的序号并且主节点可以开始处理新的活跃序列的I/O事务。运行于从节点上的应用将继续被阻止处理事务。

在框208处,主节点118将新的序号发送到每一个从节点120。在一些示例中,主节点118通过将新的序号直接写入集群存储器114的共享部分中的规定地址而发送新序号。在一些示例中,主节点118通过将诸如中断信号的消息发送到从节点120中的每一个而使得每一个从节点120递增序列。在接收到消息时,每一个从节点120使得集群序号递增。当序号在特定的从节点120上递增时,运行于该从节点120上的应用能够读新的活跃序列。然后,处理流返回框202,并且从节点120可以开始处理相应的事务集的事务。

图2的过程流程图不旨在指示方法200的元素应按任何特定的顺序来执行,或者每种情况均应包含方法200的全部元素。此外,图2中未示出的任意数量的附加元素可以包括在方法200中,取决于具体的实现方式的细节。

图3是示出了集群定序器故障转移的计算机系统的示例的框图。每一个节点106可以包括用于操作集群定序器的编程代码。此外,每一个节点106可以具有指定的备用节点,该备用节点将在节点106故障的情形下接管节点106的操作。在操作集群定序器116的主节点故障的情形下,集群定序器116可以在指定的备用节点上重新启动。

例如,如图3所示,已经作为主节点操作的节点A已经故障。被指定为节点A的备用节点的节点B则变成主节点。节点B接管集群定序器116的操作,使得序号递增,将序号分配给计算系统中的其它节点,以及接管主节点的任何其它职责,包括上文所述的那些。

在一些示例中,每一个节点106将一个或多个集群序号存储在节点的处理器的存储器位置上。例如,处理器存储器可以包括当前序号和前一序号。前一序号可用来确保备用节点将能够继续按序号的正确进展操作。当备用节点变成新的主节点时,新的主节点能够通过查询每一个节点以识别当前和/或前一序号来确定下一序号。

图4是示出了多个集群定序器的计算机系统的示例的框图。如图4所示,计算机系统100可以被配置为同时操作两个或更多个集群定序器116,标记为定序器1、定序器2和定序器3。每一个集群定序器116与单独的应用(未示出)相关联,其中每一个应用的I/O事务不相互依赖。每一个应用能够利用不同的序列而在计算机系统100的多个节点106上操作。在图4所示的示例中,节点A作为使用定序器1的第一应用的主节点来操作,并且节点B作为使用定序器2的第二应用和使用定序器3的第三应用的主节点来操作。

图5是示出了存储代码的有形的、非暂时性的计算机可读介质的示例的框图,该代码被配置为操作具有集群定序器的计算机系统的一个或多个节点。计算机可读介质由附图标记500来指代。计算机可读介质500可以包括RAM、硬盘驱动器、硬盘驱动器阵列、光驱、光驱阵列、非易失性存储器、闪速驱动器、数字多功能盘(DVD)或压缩盘(CD),以及其它。计算机可读介质500可以由处理器502通过计算机总线504来访问。此外,计算机可读介质500可以包括被配置为引导一个或多个处理器执行本文所述的方法的指令。例如,计算机可读介质500可以包括由诸如图1和图2的节点106的计算设备执行的软件和/或固件。

本文所论述的各个编程代码部件可以存储在计算机可读介质500上。例如,编程代码部件可以包括在计算系统的处理节点中的一些或全部节点上,例如计算系统100的节点106。区域506可以包括集群定序器。集群定序器操作由主节点来执行,但是集群定序器的编程代码可以位于计算机系统100的节点106的全部上。集群定序器的多个实例可以在相同节点或不同节点上启动,其中集群定序器的每一个实例由不同的应用使用。集群定序器可以被配置为使得标识活跃事务集的序号递增并且将序号发送到多个从节点。在接收到来自全部从节点120的确认后,集群定序器可以将障碍值发送到多个从节点中的每一个。在障碍值已经发送到全部从节点后,集群定序器可以使得序号递增并且将递增后的序号发送到从节点。集群定序器可以被配置为以规定的时间间隔将序号递增。

区域508可以包括处理活跃事务集的存储事务的事务处理器。事务可以包括从存储读数据以及将数据发回到客户端设备,以及将数据写入存储,以及其它。一接收到序号,事务处理器就可以开始执行活跃事务集的存储事务,而不等待全部从节点具有相同序号的证实。在执行活跃事务集的全部事务后,每一个节点可以发送确认以指示活跃事务集的事务已被执行。如果从节点接收到障碍值,则从节点可以使得当前序号无效并且停止执行事务。

区域510可以包括故障转移引擎,该故障转移引擎能够检测集群内的主节点的故障。在检测到主节点的故障时,主节点的指定备用节点的故障转移引擎可以通过执行主节点先前所执行的集群定序器操作来接管主节点的角色。备用节点可以通过查询其它从节点来确定活跃序号。

虽然显示为连续的块,但是编程代码部件可以任意顺序或配置来存储。例如,如果有形的、非暂时性计算机可读介质是硬盘驱动器,则软件部件可以存储在非连续的、或甚至重叠的扇区中。

虽然本技术可易于实现各种修改和替代形式,但是上述的示范性的示例仅通过举例说明的方式而示出。应当理解,该技术不旨在限于本文公开的特定的示例。事实上,本技术包括落入本技术的范围内的全部的替代方案、修改例和等同方案。

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