分离存储事务日志的制作方法

文档序号:10540849阅读:165来源:国知局
分离存储事务日志的制作方法
【专利摘要】本文公开了用于维护存储单元事务日志的系统、非暂时性计算机可读介质以及方法。从控制器所接收的存储单元事务日志被分离。
【专利说明】
分离存储事务曰志
【背景技术】
[0001]迄今为止的一些分布式文件系统使用控制器的网络来管理去往和来自存储单元的事务。这样的控制器可以在它们自己之间复制事务日志。在控制器故障的情况下,事务日志可以用于确定当控制器故障时在进行中的事务。
【附图说明】
[0002]图1是根据本公开内容的方面的示例性系统的框图。
[0003]图2是根据本公开内容的方面的示例性方法的流程图。
[0004]图3是根据本公开内容的方面的工作示例。
[0005]图4是根据本公开内容的方面的另外的工作示例。
【具体实施方式】
[0006]如以上所指出的,网络中的控制器可以在它们自己之间复制事务日志以用于故障容忍的目的。如果一个控制器故障,则另一个控制器可以代替故障的控制器。通过分析事务日志,代替的控制器可以从故障的控制器结束的地方继续。一些控制器忽略所接收的事务日志,直到发送控制器故障为止。这样的控制器可以已知为“被动接收者”。该方法具有对系统非破坏性的优点。在该情况下,接收者在接收时不对所接收的事务日志进行认证并且简单地忽略它们;此外,发送控制器不等待来自接收者的确认。
[0007]然而,虽然被动接收者控制器是非破坏性的,但是如果复制的事务日志损坏并且发送控制器故障,则可能出现问题。在该情况下,代替的控制器可能不能确定事务日志与哪个存储单元相关联并且整个系统可能自动停止。支持工程师可能需要通过检查每个控制器的存储器中的日志并且撤销某些事务来使系统稳定。拼合事务日志可能是繁重的、冗长的过程。事务日志可以跨不同的存储器地址而分散;因此,不仅难以确定哪个存储单元生成了每个事务日志,而且日志的无序或以其它方式随机的布置使得难以确定日志的正确时间顺序。
[0008]鉴于前述内容,本文中所公开的示例通过提供用于维护事务日志的系统、计算机可读介质和方法来解决这些问题。在一个示例中,从控制器所接收的存储单元事务日志被分离到不同的列表或序列中,使得每个列表或序列包含由一个存储单元所生成的事务日志。因而,日志可以按存储单元隔离,而不是随机地布置在存储器中。如果来自故障的控制器的事务日志不可读,则故障的控制器可以被另一个控制器代替而不停止整个系统,因为日志的发送者可以被自动确定,尽管日志损坏。在还另外的示例中,校验和可以用于对日志的内容和次序进行认证。当参考以下的示例描述和附图来考虑时,将领会本公开内容的方面、特征和优点。以下描述并不限制本申请;相反,本公开内容的范围由随附权利要求和等同物来限定。
[0009]图1表示用于执行本文中公开的技术的说明性计算机装置100的示意图。计算机装置100可以是类似配置的计算机的网络中的一个控制器。控制器的网络可以管理去往和来自多个存储单元的事务。计算机装置100可以包括通常结合计算机所使用的所有组件。例如,它可以具有键盘和鼠标和/或各种其它类型的输入设备,诸如笔式输入、操纵杆、按钮、触摸屏等等,以及显示器,所述显示器可以包括例如CRT、LCD、等离子体屏幕监视器、TV、投影仪等等。计算机装置100还可以包括网络接口(未示出)来与网络中的其它计算机通信。计算机装置100还可以包含处理器110,所述处理器可以是任何数目的众所周知的处理器,诸如来自Intel?公司的处理器。在另一示例中,处理器110可以是专用集成电路(“ASIC")。非暂时性计算机可读介质(“CRM”)112可以存储可以由处理器110检索和执行的指令。如将在以下更详细地讨论的,指令可以包括故障容忍模块116。非暂时性的CRM 112可以由能够从非暂时性CRM 112取出或获得逻辑并且执行其中所包含的指令的任何指令执行系统使用或与所述指令执行系统结合地使用。
[0010]非暂时性计算机可读介质可以包括许多物理介质中的任一个,诸如例如电子、磁性、光学、电磁或半导体介质。合适的非暂时性计算机可读介质的更具体的示例包括但不限于便携式磁性计算机盘(诸如软盘或硬驱动器)、只读存储器(“ROM”)、可擦除可编程只读存储器、便携式压缩盘或可以直接或间接耦合到计算机装置100的其它存储设备。可替换地,非暂时性CRM 112可以是随机存取存储器(“RAM”)设备或可以被划分成组织为双列直插式存储器模块(“DMM”)的多个存储器分段。非暂时性CRM 112还可以同样包括一个或多个前述和/或其它设备的任何组合。虽然在图1中示出了仅仅一个处理器和一个非暂时性CRM,但是计算机装置100可以实际上包括可以或可以不存储在相同的物理外壳或位置内的附加的处理器和存储器。
[0011]驻留在非暂时性CRM112中的指令可以包括将由处理器110直接(诸如机器代码)或间接(诸如脚本)执行的任何指令集。在这方面,术语“指令”、“脚本”和“应用”在本文中可以可互换地使用。计算机可执行指令可以以任何计算机语言或格式来存储,诸如以目标代码或源代码模块。此外,应理解的是,指令可以以硬件、软件或硬件和软件的组合的形式来实现,并且本文中的示例仅仅是说明性的。
[0012]如以上所指出的,文件系统可以包括控制器的网络,所述控制器管理去往和来自至少一个存储单元的事务并且维护包含事务详情的事务日志。网络中的每个控制器可以与图1的计算机装置100类似地被配置。在一个示例中,网络中的给定控制器可以执行故障容忍模块116。在执行时,故障容忍模块116可以指示处理器110将接收自网络的事务日志隔离到被分配在存储器中的分离的列表中,使得每个列表包含由一个存储单元所生成的事务日志。在另外的示例中,故障容忍模块116可以指示处理器110得出针对每个所接收的事务日志中的内容的内容校验和并且得出针对使每个列表中所接收的事务日志对相关联的每个地址的指针或链接校验和。
[0013]在图2-4中示出了所述系统、方法和非暂时性计算机可读介质的工作示例。特别地,图2图示了用于维护事务日志的示例性方法200的流程图。图3-4均示出了根据本文中所公开的技术的工作示例。以下将关于图2的流程图来讨论图3-4中所示的动作。
[0014]如图2的块202中所示的,可以从控制器的网络或集群接收事务日志。现在参考图3,包括两个说明性的控制器302和318的示例性集群被示出为通过网络316进行通信。网络316可以包括各种配置并且使用各种协议,包括内联网、虚拟专用网络、本地以太网网络、使用专有于一个或多个公司的通信协议的专用网络、蜂窝和无线网络(例如WiFi)以及前述的各种组合。尽管在图3中描绘了仅仅两个控制器,但是应当领会的是典型的网络可以包括更大量的联网控制器。
[0015]图3还示出了经由网络316与控制器302和318通信的三个存储单元320、322和324。在图3的示例中,控制器318(即控制器A)可以管理去往和来自存储单元320和322(即分别为存储单元A和存储单元B)的事务。此外,在图3的示例中,存储单元324(即存储单元C)可以由控制器302(即控制器B)管理。每个存储单元320、322和324可以包括物理块设备,所述物理块设备提供可以从中读取或向其写入的线性寻址的数据块的集合。存储单元的一些示例可以包括但不限于盘驱动器、固定或可移除的磁性介质驱动器(例如硬驱动器、软驱动器或基于zip的驱动器)、可写或只读光学介质驱动器(例如⑶或DVD)、磁带驱动器或固态大容量存储设备。在另一示例中,存储单元可以是驻留在存储网络上的存储设备,诸如使用光纤信道、无限带宽技术(Infiniband)或因特网协议(“IP”)接口而被呈现给存储区域网络(“SAN”)的小型计算机系统接口( “SCSI”)设备。应理解的是,每个存储单元320、322和324可以包括任何其它类型的存储单元并且前述内容是非穷举的列表。在另一示例中,存储单元320、322和324可以被配置为可以经由操作系统的逻辑接口而访问的卷(vo Iume )。
[0016]图3还示出了控制器之一、控制器302的靠近图示,其被示出为具有布置在其中的存储器301。虽然存储器301被示出为对于控制器302本地的存储器,但应理解的是,一些示例可以使用远程存储器来实现。在该示例中,存储器块304被映射到控制器318。存储器块304可以用于维护针对由控制器318管理的每一个存储单元(其在本示例中是存储单元320和322)的事务日志。控制器302还可以分配存储器块312来维护针对其自己的存储单元(其在本示例中是存储单元324)的事务日志。虽然图3的示例示出了被映射到每个控制器的一个存储器块,但是应理解的是,其它示例可以将多个存储器块映射到每个控制器。
[0017]参考回到图2,事务日志可以被分离,如块204中所示的。在一个示例中,事务日志可以分布在事务日志的分离的列表或系列之中。每个列表可以是例如链表数据结构,使得每个事务日志还可以包括向下一个事务日志的地址指针。
[0018]参考回到图3的示例,存储器块304包含两个不同的事务日志序列,即列表306和列表308。在该示例中,列表306和列表308采用链表数据结构来保持对产生于每个存储单元的事务日志的跟踪。每个列表可以包括表头记录,所述表头记录指示每个列表中的事务日志起源于哪个存储单元。例如,列表306包括表头记录307并且列表308包括表头记录309。表头记录307指示列表306中的事务日志产生于存储单元320(即存储单元A)并且表头记录309指示列表308中的事务日志产生于存储单元322(即存储单元B)。在控制器318故障的情况下,表头记录可以被读取以确定由控制器318所管理的存储单元。图3还示出了具有表头记录315的列表314。表头记录315指示列表314中的事务起源于存储单元324(即存储单元C)。控制器302可以维护列表314以跟踪来自其自己的存储单元324的事务日志。
[0019]控制器302可以将列表314的拷贝复制到控制器318,使得在控制器302故障的情况下,控制器318可以使用列表314的拷贝来代替控制器302。控制器318还可以在其自己的存储器中保存列表306和列表314的本地拷贝。虽然图3示出了控制器302管理存储单元324并且控制器318管理两个存储单元320和322,但是应理解的是,图3中的配置仅仅是说明性的,并且控制器可以与以任何组合的存储单元相关联。如以上所指出的,应理解的是,可以配置附加的存储单元和控制器。
[0020]在由控制器(例如控制器302)接收到每个事务日志时,可以针对每个所接收的事务日志而得出内容校验和,并且可以针对使每个列表中的所接收的事务日志对相关联的每个指针或链接而得出指针校验和。如以下将进一步讨论的,这些校验和可以用于认证每个事务日志的内容以及事务日志的每个列表或系列中的事务日志的次序。在一个示例中,日志的次序可以被定义为事务日志以其生成的时间次序。
[0021]现在参考图4,控制器302可以确定网络中的控制器是否已经故障。在图4的示例中,控制器318故障并且控制器302可以定位从由控制器318所管理的存储单元之一产生的事务日志的每个列表。控制器302被示出为使用从由控制器318所管理的存储单元之一产生的事务日志的每个列表代替控制器318来执行后续事务。如以上所指出的,在接收到每个事务日志时所得出的内容校验和可以用于认证从由故障的控制器所管理的存储单元之一产生的每个事务日志中所包含的内容。此外,指针校验和可以用于认证从由故障的控制器所管理的存储单元之一产生的每个列表中的事务日志的次序。控制器302可以自动代替控制器318并且可以撤销由于日志损坏而不可解决的任何改变。
[0022]有利地,前述系统、方法和非暂时性计算机可读介质可以将事务日志分布或以其它方式隔离到分离的列表中,使得每个列表包括来自一个存储单元的事务日志。在这方面,系统可以通过对指示每个列表中的日志所起源于的存储单元的表头记录进行校验而自动从故障的控制器恢复。继而,本文中所公开的技术可以防止系统在事务日志的认证失败时停下来。代替地,以无缝且对系统非破坏性的方式来替换故障的远程控制器。
[0023]尽管已经参考特定示例描述了本文的公开内容,但是要理解的是,这些示例仅仅说明本公开内容的原理。因此要理解的是,可以对示例做出许多修改并且可以设想到其它的布置而不脱离于如由随附权利要求所限定的本公开内容的精神和范围。此外,虽然在附图中以特定次序示出了特定过程,但是这样的过程不限于任何特定的次序,除非这样的次序在本文中被明确阐明;相反,过程可以以不同的次序或并发地执行并且可以添加或省略步骤。
【主权项】
1.一种系统,包括: 用于管理去往和来自多个存储单元的事务并且用于维护包含事务详情的事务日志的控制器的网络; 故障容忍模块,其在执行时指示至少一个处理器: 将接收自网络的事务日志隔离到被分配在存储器中的分离列表中,使得每个列表包含由一个存储单元所生成的事务日志; 得出针对每个所接收的事务日志中的内容的内容校验和;以及 得出针对使每个列表中的所接收的事务日志对相关联的每个地址的指针校验和。2.根据权利要求1所述的系统,其中所述故障容忍模块在执行时还指示至少一个处理器: 确定网络中的控制器是否已经故障;以及 如果控制器已经故障,则定位从由控制器所管理的存储单元之一产生的事务日志的每个列表。3.根据权利要求2所述的系统,其中,如果控制器已经故障,则故障容忍模块在执行时还指示至少一个处理器使用从由控制器所管理的存储单元之一产生的事务日志的每个列表代替控制器来执行后续事务。4.根据权利要求2所述的系统,其中,如果控制器已经故障,则故障容忍模块在执行时还指示至少一个处理器: 使用内容校验和来认证从由控制器所管理的存储单元之一产生的每个事务日志中所包含的内容;以及 使用指针校验和来认证从由控制器所管理的存储单元之一产生的每个列表中的事务日志的次序。5.根据权利要求1所述的系统,其中事务日志的每个列表包括表头记录,所述表头记录指示每个列表中的事务日志起源于哪个存储单元。6.—种其中具有指令的非暂时性计算机可读介质,所述指令在执行时指示至少一个处理器: 与管理去往和来自多个存储单元的事务并且维护包含事务详情的事务日志文件的控制器的集群中的每个控制器建立通信; 读取从集群所接收的事务日志;以及 将所接收的事务日志分离到事务日志的不同系列中,使得每个系列包含由一个存储单元所生成的事务日志。7.根据权利要求6所述的非暂时性计算机可读介质,其中,所述介质中的指令在执行时还指示至少一个处理器: 确定集群中的控制器是否已经故障;以及 如果控制器已经故障,则定位从由控制器所管理的存储单元之一产生的事务日志的每个系列。8.根据权利要求7所述的非暂时性计算机可读介质,其中,所述介质中的指令在执行时还指示至少一个处理器:如果控制器已经故障,则使用从由控制器所管理的存储单元之一产生的事务日志的每个系列代替控制器来执行后续事务。9.根据权利要求7所述的非暂时性计算机可读介质,其中,所述介质中的指令在执行时还指示至少一个处理器: 计算针对每个所接收的事务日志中的内容的内容校验和; 计算针对使事务日志的每个系列中的所接收事务日志对相关联的每个链接的链接校验和; 如果控制器已经故障,则使用内容校验和来认证从由控制器所管理的存储单元之一产生的每个事务日志中所包含的内容;以及 如果控制器已经故障,则使用链接校验和来认证从由控制器所管理的存储单元之一产生的每个系列中的事务日志的次序。10.根据权利要求6所述的非暂时性计算机可读介质,其中事务日志的每个列表包括表头记录,所述表头记录指示每个列表中的事务日志起源于哪个存储单元。11.一种方法,包括 使用至少一个处理器来读取由控制器的集群所管理的存储单元事务的事务日志; 使用至少一个处理器来将事务日志分布在事务日志的分离序列之中,使得每个序列包含由一个存储单元所生成的事务日志; 使用至少一个处理器来确定针对由控制器的集群所接收的每个事务日志中的内容的内容校验和;以及 使用至少一个处理器来确定针对使事务日志的每个序列中的所接收事务日志对相关联的每个地址指针的指针校验和。12.根据权利要求11所述的方法,还包括: 使用至少一个处理器来确定控制器是否已经故障;以及 如果控制器已经故障,则使用至少一个处理器来定位从由控制器所管理的存储单元之一产生的事务日志的每个序列。13.根据权利要求12所述的方法,还包括如果控制器已经故障,则使用至少一个处理器通过读取从由控制器所管理的存储单元之一产生的事务日志的每个序列代替控制器来执行后续事务。14.根据权利要求12所述的方法,还包括: 如果控制器已经故障,则使用至少一个处理器利用内容校验和来认证从由控制器所管理的存储单元之一产生的每个事务日志中所包含的内容;以及 如果控制器已经故障,则使用至少一个处理器利用指针校验和来认证从由控制器所管理的存储单元之一产生的每个序列中的事务日志的次序。15.根据权利要求11所述的方法,其中事务日志的每个序列包括表头记录,所述表头记录指示每个序列中的事务日志起源于哪个存储单元。
【文档编号】G06F12/00GK105900073SQ201380080623
【公开日】2016年8月24日
【申请日】2013年8月29日
【发明人】S.纳扎里, J.王, S.D.默蒂, M.马
【申请人】慧与发展有限责任合伙企业
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1