用于存储系统事务的系统、方法和介质与流程

文档序号:17178571发布日期:2019-03-22 20:43阅读:177来源:国知局
用于存储系统事务的系统、方法和介质与流程

许多大规模存储系统被配置为高度可用的、分布式存储系统。这样的存储系统包含了高级别的冗余度来改善所存储的数据的可用性和可访问性。例如,群集存储系统可以包括控制多个存储设备的控制器节点的网络。大量的节点可以被配置为对同一存储设备具有访问权,并且节点本身也可以彼此通信耦合以便进行节点间通信。该配置实现了节点之间的负载平衡以及在节点失效的情况下的失效备援能力。

附图说明

在下面的详细说明中以及参考附图来描述一些示范性的实施例,其中:

图1是具有分布式票证分配的存储系统的示例框图;

图2是具有分布式票证分配的存储系统的示例框图;

图3是处理具有分布式票证分配的存储系统中的事务的方法的示例的过程流程图;以及

图4是示出了存储有被配置为操作具有分布式票证分配的存储系统的节点的代码的有形的、非暂时性的计算机可读介质的示例框图。

具体实施方式

本公开提供了用于对存储系统中的输入/输出(I/O)事务进行定序和跟踪的技术。在具有冗余存储控制器(本文还称为节点)的存储系统中,两个或更多个节点可以对同一存储空间具有访问权。I/O冲突是一种一个或多个节点试图同时访问同一存储对象的现象。一种预防I/O冲突的方式是提供防止其他节点同时访问同一存储对象的集中式管理器节点。该集中式管理器节点能够充当集中式票证分配器,其能够将票证发布给存储系统中的其他节点。每个发布的票证确保了被发布了票证的节点将对由事务所访问的存储对象具有排他访问权。这样的集中式票证分配器的一个缺陷在于,请求票证的过程会导致高级别的节点间通行,其中集中式管理器节点会变成瓶颈。本文所描述的技术提供了一种分布式票证分配功能,其中每个节点包括其自己的票证分配器并且拥有存储卷的指定区域。每个区域的所有者节点控制住确保I/O冲突不会发生。为了确保如果节点失效事务不会遗漏,每个节点能够向每个票证配置指定的备用节点。分布式票证系统的示例将下文中结合图1和图2进行更详细说明。

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

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

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

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

客户端计算机102进行的访问存储空间的请求在本文称为事务。事务的类型的示例包括写操作、读操作、存储卷元数据操作以及预留请求,以及其他操作。在一些示例中,客户端计算机102是远程客户端,并且事务针对数据的远程复制。每个客户端计算机102可以与多个节点106耦合。在一些示例中,节点106中的一个被指定为用于客户端计算机102的主节点,该节点是接收客户端计算机102所产生的全部事务的节点。通过主节点接收到的事务可以传递给群集中的不同节点以便执行,如下文参考图2更全面说明的。

随着每个事务被处理,事务被定序并且保存到事务日志114中以确保事务不与其他事务冲突,并且在正常的或不利的操作条件下不会丢失。事务日志条目在本文称为票证,并且管理票证的组件被描述为票证分配器116。如图1所示,每个节点有其自身的票证分配器116和事务日志114。从票证分配器发布票证是确保在事务正在执行的同时对所请求区域的对象具有排他访问权。与对于同一对象的活动事务冲突的任何事务将被推迟直至活动事务已经完成。在活动事务完成时,任何被推迟的事务将再次与活动事务进行比较以判定现在是否能够执行任何推迟的事务。

在群集内的一个或多个节点106失效的情况下,计算机群集接收到的每个事务也被存储在高度可用的日志中。负责记录特定事务的节点106的票证分配器116将事务的参数存储在能够由群集的备用节点恢复的位置。如果节点遭遇失效,则存储在该位置的事务数据能够被恢复,并且事务重放以用于服务继续。每个节点106可以包括其自身单独的群集存储器(未示出),其缓冲传递来的信息,包括事务信息、以及日志信息,以及其他信息。群集存储器能够实现为任何适合的高速缓存存储器,例如,同步动态随机存取存储器(SDRAM)。

每个节点将负责存储系统100内的存储空间的特定区域。对于每个事务,负责受事务影响的区域的具体节点106的票证分配器116将发布用于该事务的票证并且记录该事务。每个节点还负责防止在其控制中的区域的I/O冲突。通过该方法,票证分配和事务记录分布于系统的全部节点之间,而不是集中在系统授权的单个点处。由于每个节点对其自身的票证分配器116具有直接的访问权,所以分布式的票证分配器模型减少了节点间通信,而且还减少了操作期间的锁争用,这显著地改善了性能。分布式的票证分配器模型还通过将来自单个点的资源池划分到群集内的多个点来减少对资源的争用。

图2是具有分布式票证分配的存储系统的示例框图。更具体地,图2示出了图1的系统,其中节点106与逻辑存储卷202耦合。逻辑存储卷202可以从磁盘阵列108中存储驱动器112或所包含的任何适合的存储驱动器112的组合的可用存储空间来提供。卷进一步划分成区域204,图2中显示为区域1、区域2和区域3。每个节点106控制特定的区域204,并且在本文中称为该区域的所有者。为了本说明书的目的,节点A被配置为区域1的所有者,节点B被配置为区域2的所有者,而节点C被配置为区域3的所有者。每个节点106负责防止其所拥有的每个区域204的I/O冲突。因此,每个节点106负责发布票证以及记录与其所拥有的区域204有关的事务。在一些示例中,每个节点106还负责执行那些影响其所拥有的区域204的事务。

虽然图2中没有示出,但是每个节点与多个客户端计算机(诸如,图1的客户端计算机102)耦合。每个客户端102与被指定为客户端主节点的节点106相关联。从客户端计算机102发送到群集的事务将被发送到客户端的主节点。在一些情况下,客户端的主节点106可以不是受该事务影响的区域204的所有者。如果主节点106不是受该事务影响的区域204的所有者,则主节点将事务转送到确实拥有该受影响区域204的节点106。当受事务影响的区域204的所有者接收到事务时,所有者节点106控制用于该事务的票证的发布并且执行该事务。在上文阐述的所有权关系示例后,如果节点C接收到属于区域2的事务,则该事务将转送到节点B(区域2的所有者)以便处理。

对其正在请求票证的事务在本文称为未决事务。执行事务是指在存储卷上处理事务,例如,将数据写入该存储卷或者从该存储卷读数据。被活动地执行的事务将在本文中称为活动事务。在图2中,用于每个节点106的事务日志114被显示为包含多个事务日志条目,本文称为票证206,每个都代表了活动事务。例如,节点A具有标签为A1至A4的四个票证206。在图2中,字母代表了发布票证206的节点106的标识符,并且数字代表了事务的序列号。将理解的是,为了本说明书的目的简化了票证标签。

为了发布票证206,所有者节点106检查事务日志114中的其副本以判定是否存在涉及到受未决事务影响的对象的活动事务。如果存在涉及到受未决事务影响的对象的活动事务,则不发布票证。未决事务可由所有者节点进行高速缓存,等待票证的发布。当受影响的对象不再涉及到活动事务时,所有者节点的票证分配器116能够发布该票证206。通过这种方式,所有者节点防止其所拥有的区域的I/O冲突。

如果不存在涉及到受未决事务影响的对象的活动事务,则所有者节点发布用于事务的票证206并且将该票证存储在其自身的事务日志114中作为事务日志条目。在发布票证之后,所有者节点执行该事务。例如,执行该事务可以包括将从客户端102接收到的数据写入存储设备或者从存储设备读数据以及将请求的数据发送给客户端102,这取决于事务类型。当所有者节点完成执行事务时,所有者节点将确认发送给主机并且从事务日志114中擦除票证。

本文称为票证的每个事务日志条目可以包括与执行该事务有关的全部信息,诸如受事务影响的存储地址,以及事务是读还是写。如果事务是读操作,则票证可以包括数据在读之后要被发送到的地方的标识。票证还包括序列号和发布节点唯一的并且表明哪个节点106发布该票证的标识符。序列号是针对每个票证进行递增的数字并且能够表明执行事务的次序。节点106发布的全部的票证206存储到其自身的事务日志114中。另外,每个票证206还可以发送到备用节点以便在节点失效的情况下使用,如下文进一步所述。

在一些情况下,节点106可以接收跨两个区域204的事务,该两个区域204由两个不同的所有者节点106来控制。如果事务跨两个区域204,则事务可以被划分成两个事务并且被处理为两个不同的事务,每个区域204的所有者节点106对于属于其所控制的区域204的事务发布票证206。例如,如果节点B接收跨区域1(由节点A所有)和区域3(由节点C所有)的事务,则节点B将产生两个事务,使得每个事务仅属于一个区域。节点B随后将影响区域1的事务转送到节点A,并且将影响区域3的事务转送到节点C。

能够在节点失效的情况下使用事务日志,以恢复由失效的节点106处理过的事务。对于每个事务,所有者节点将票证发送到一个备用节点。备用节点将票证保存到另一日志,称为备份日志208。备用节点可以在针对每个事务的基础上进行选择。换言之,每个事务能够进行单独地评估以判定哪个节点106用作事务的备用节点。

在一些示例中,备用节点是基于事务的类型以及事务涉及到的对象来选择的。例如,每个事务将涉及到其存储空间由特定区域204提供的特定对象。作为示例,对象可以是特定的存储驱动器或者存储空间的某其他块。每个对象还具有指定的备用节点,如果用于与对象关联的区域的原所有者节点失效,则该指定的备用节点将变成该对象的新的所有者节点。用于事务的备用节点能够被指定为在节点失效的情形下将变成关联对象的所有者的节点。通过遵从该对象的相同的失效备援关系以及有关的事务,分布式票证分配器能够在节点失败事件之后高效地恢复这些事务。

在节点106失效情形下,对由失效节点拥有的区域204的控制将依照预先建立的失效备援程序分布给其他节点106。每个节点还将搜索其自身的备份日志以判定是否存在与该失效节点有关的任何活动事务。新的所有者节点随后将回放与该备份日志中所找到的失效节点有关的任何活动事务。因为新的所有者节点是事务和与该事务有关的区域两者的所有者,所以新的所有者节点能够执行事务,而不必将事务转移给不同的节点。

在图2所示的示例中,节点A具有4个活动事务,这些事务在事务日志114中被表示为票证A1,A2,A3和A4。为了本示例的目的,每个事务将被视为写事务。然而,将意识到,该事务可以是任何适合的影响存储卷108的事务。全部四个票证影响区域1,该区域由节点A所有。另外,用于每个事务的票证也已经发送到指定的备用节点。与票证A1,A2和A4有关的事务是到由节点A当前拥有的地址空间的写入,但是被指定为如果节点A失效则由节点B拥有。因此,票证A1,A2和A4已经发送到节点B。如果节点A失效,则节点B将承担与票证A1,A2和A4有关的一个或多个存储对象的所有权关系,并且通过将数据写入票证中标识的地址来执行事务。如果存在写排序约束,则票证的序列号确保该写入按正确的次序来执行。

图3是在具有分布式票证分配的存储系统中处理事务的方法的示例的过程流程图。该方法300能够通过诸如图1所示的节点106的一个或多个存储控制器来执行

在框302处,在计算机群集的节点中的一个节点处接收到来自客户端计算机中的一个的新事务。该事务可以是读事务或写事务,以及其他事务。该事务目标为从存储系统可用的存储空间提供的特定存储卷。

在框304处,新事务被转移到群集的多个节点中的所有者节点。所有者节点是控制受事务影响的存储卷的区域的节点。在一些情况下,事务可以由所有者节点直接接收,在该情况下,将节点转移到所有者节点意味着将事务保存在最初接收到事务的所有者节点处。框306至318均在所有者节点处执行。

在框306处,所有者节点针对正在由所有者节点执行的活动事务,检查其事务日志。这样做是为了判定在新的事务与活动事务之间是否有冲突,诸如I/O冲突。如果在框308处,在新事务与活动事务之间有冲突,则过程流前进到框310。

在框310处,事务的执行被推迟,意味着不为该事务发布票证,并且不执行该事务。所推迟的事务会被阻挡,或者在一些示例中,被存储到缓冲器以便稍后执行。在活动事务完成后,过程流返回到框306,并且执行另一冲突事务的检查。框306,308和310能够被重复直至全部的冲突事务已经结束执行并且不再活动。如果在框308处其判定出不存在冲突的活动事务,则过程流可以继续到框312。

在框312处,所有者节点的票证分配器发布用于新事务的票证。票证确保了对受事务影响的存储对象的排他访问权。票证被存储到所有者节点的事务日志。

在框314处,所有者节点标识用于事务的备用节点。在一些示例中,通过判定在节点失效的情形下受事务影响的存储对象将如何进行处理来识别备用节点。例如,如果当前节点失效,则无论何种节点都将变成存储对象的新所有者,并且能够被指定为备用节点。

在框316处,针对该事务发布的票证被送到备用节点。在接收到票证时,备用节点将票证存储到存储器中,但是关于票证不采取任何措施,除非从其接收到票证的节点失效。

在框318处,根据事务的类型以及事务中指定的存储位置,在存储卷上执行事务。例如,如果事务是写,则包含在事务中的数据被写到该事务中指定的存储器地址。

在框320处,票证被释放,并且过程流结束。为释放票证,票证从事务日志中擦除,并且也从备用节点去除。每当接收到新事务时,都可以执行上述的方法。

图4是示出了存储有代码的有形的、非暂时性的计算机可读介质的示例框图,所述代码被配置为操作具有分布式票证分配的存储系统的节点。计算机可读介质是通过附图标记400来指代的。计算机可读介质400可以包括RAM、硬盘驱动器、硬盘驱动器阵列、光驱动器、光驱动器阵列、非易失性存储器、闪速驱动器、数字多功能盘(DVD)或者压缩盘(CD),以及其他。计算机可读介质400可以由处理器402通过计算机总线404来访问。此外,计算机可读介质400可以包括被配置为执行本文所描述的方法的代码。例如,计算机可读介质400可以包括由存储控制器执行的固件,存储控制器诸如图1和图2中的节点106。

本文所述的各种软件组件可以存储到计算机可读介质400上。在诸如图1和图2中所示的群集计算系统中,每个组件将运行于每个节点之上。为了本说明书的目的,组件在其上运行的节点将被描述为相对于该组件的主节点(home node)。区域406可以包括事务路由器,在接收到来自客户端计算机的事务时,该事务路由器判定主节点是受该事务影响的区域的所有者。如果主节点不是所有者,则识别出用于该事务的所有者节点,并且事务被转送到所有者节点。否则,如果主节点是所有者,则该事务由主节点处理。区域408可以包括票证分配器,该票证分配器将票证发布给事务并且通过检查活动事务的日志中新接收到的事务来确保不发生I/O冲突。区域410可以包括请求用于事务的票证并且执行已经接收到票证的活动事务的事务处理器。事务处理器还能够指定用于每个事务的备用节点并且将对应的票证发送给到备用节点。区域412可以包括失效备援引擎,其能够检测群集中的另一节点的失效。在接收到节点失效时,失效备援引擎能够检查从失效节点发送到它的任何票证的其存储器。通过失效节点发送给它的任何票证将由失效备援引擎来执行。

虽然图示为毗邻的框,但是软件组件能够以任意次序或配置来存储。例如,如果有形的、非暂时性的计算机可读介质是硬盘驱动器,则软件组件可以存储在非毗邻的或者甚至是重叠的扇区中。

虽然本公开的技术可易于进行各种修改和替代的形式,但是上述示范性的示例仅为了示例的方式而显示出。应当理解,该技术不旨在限于本文公开的特定示例。事实上,本技术包括落入随附权利要求的真正的精神和范围内的全部的替代、修改和等同方案。

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