CN101034339B - 分级时标 - Google Patents
分级时标 Download PDFInfo
- Publication number
- CN101034339B CN101034339B CN2007100857185A CN200710085718A CN101034339B CN 101034339 B CN101034339 B CN 101034339B CN 2007100857185 A CN2007100857185 A CN 2007100857185A CN 200710085718 A CN200710085718 A CN 200710085718A CN 101034339 B CN101034339 B CN 101034339B
- Authority
- CN
- China
- Prior art keywords
- markers
- data
- brick
- rank
- classification
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
Abstract
本发明的实施例涉及存储在计算机可读取媒质中的数字编码分级时标(3000)。本发明的分级时标包括存储时标值(3004)的第一字段以及存储表示分级处理系统内的时标范围的处理级别表示(3006)的第二字段。
Description
背景技术
随着计算机联网和互连系统的容量、可靠性和吞吐量一直在稳定地增长,以及随着基于联网和互连系统的分布式计算系统的尺寸和容量的相应增加,在研究分布式计算问题的理论理解方面已经获得了巨大的进步,由此可以研发并广泛推广用于在分布式系统内分配计算任务的高功率并有效的工具和方法。在分布式系统的早期研发阶段,将大规模计算机与微型计算机直接或者通过网络互连以便分配对大量计算任务的处理,每个计算机具有多个外围设备,包括大容量存储设备。随着联网系统日渐稳固、多能和经济,研发了独立的大容量存储设备,例如独立盘阵列,这些独立的大容量存储设备通过一个或多个网络与远程主计算机互连由此存储大量数据,这些数据可以被大规模计算机到微型计算机的大量计算机系统共享。近来,如下详细描述的,开始努力研发跨过通过一个或多个网络互连的大量大容量存储设备的分布式大容量存储系统。
随着大容量存储设备已经由独立安装到单一计算机系统并受其控制的外围设备演化为被远程主计算机共享的独立设备,最终演化为由网络连接在一起的大量分立大容量存储单元构成的分布式系统,与共享数据以及将共享数据保持在一致和稳固状态相关的问题就显著增大了。在许多情况下,为早期分布式系统研发的共享数据的基本方法能够扩展以用于更复杂和更高度分布的系统中,而无需进行重大修改,并且因此无需尝试验证重大修改的正确性和可伸缩性。分布式系统的设计人员、研发人员、制造商、销售商以及最终的用户不断认识到需要扩展已经研发出来的分布式计算方法和例程,并且需要新的方法和例程,以在更大、更复杂和更高度分布的系统中提供希望的数据稳固和一致性级别。
发明内容
本发明的实施例涉及存储在计算机可该媒质中的数字化编码分级时标。本发明的分级时标包括存储时标值的第一字段和存储处理级别的第二字段,该处理级别表示时标在分级处理系统内的范围。
附图说明
图1示出了根据本发明一个实施例的FAB大容量存储系统的高级简图。
图2示出了根据本发明一个实施例的示例性FAB砖的高级简图。
图3-4图示了数据镜像的概念。
图5示出了说明擦除编码冗余的高级别简图。
图6利用图3和4中使用的相同图解惯例表示了3+1擦除编码冗余方案。
图7图示了表示本发明一个实施例的当前FAB实现方案中采用的分级数据单元。
图8A-D图示了逻辑数据单元到表示本发明一个实施例的FAB系统物理盘的假设映射。
图9利用不同的表示惯例图示了表示本发明一个实施例的FAB系统内采用的逻辑数据单元。
图10A图示了每个砖维持的数据结构,其描述了表示本发明一个实施例的FAB系统的总体数据状态。
图10B图示了根据本发明一个实施例的包括砖角色的砖段地址。
图11A-H图示了在表示本发明一个实施例的FAB系统内,图10A所示的数据说明数据结构中反映出来的各种不同类型的配置变化。
图12-18图示了分布式存储寄存器的基本操作。
图19图示了由一个进程或者处理实体Pi使用的组件,该进程或处理实体连同多个其它进程和/或处理实体Pj≠i实现了分布式存储寄存器。
图20图示了利用定额确定分布式存储寄存器的当前值。
图21示出了图19概略地示出的例程处理程序和工作例程的伪码实现方案。
图22示出了类似于图17中提供的伪码的经修改的伪码,其包括到存储寄存器模型的扩展,该模型处理表示本发明一个实施例的FAB系统内根据擦除编码冗余方案在砖上的段分布。
图23图示了基于表示本发明一个实施例的FAB系统内的存储寄存器模型的数据一致性技术对时标的大依赖性。
图24图示了表示本发明一个实施例的分级时标管理。
图25-26提供了用于进一步扩展的存储寄存器模型的伪码,其包括基于定额写入由于表示本发明一个实施例的FAB系统内分布段的重新配置而可能存在的多个有效配置的概念。
图27示出了在表示本发明一个实施例的FAB系统内将存储寄存器模型扩展到迁移级别的高级别伪码。
图28图示了表示本发明一个实施例的FAB系统内的控制处理和数据存储这二者的总体分级结构。
图29A-C图示表示了为了分布特定段而从4+2擦除编码冗余方案迁移到8+2擦除编码冗余方案的情况下的时标问题。
图30图示了表示本发明一个实施例的新类型时标之一。
图31A-F图示了利用表示本发明一个实施例的新类型时标以有助于在多种冗余方案下向对分布在多个砖上的FAB段进行WRITE操作过程中数据的一致性。
图32示出了用于表示本发明一个实施例的异步时标收集进程的伪码。
图33A-F概述了表示本发明实施例的用于在分级组织的处理系统内分阶段限制时标范围的一般方法。
具体实施方式
本发明的各个实施例采用分级时标来便利于处理并管理分布式系统内的数据,并且便利于对不再需要的时标(timestamp)的垃圾收集。以下描述在当前正在研发的分布式大容量存储设备的情境下的本发明的一个实施例。该情境有些复杂。在以下的各个小节中,首先讨论分布式大容量存储系统以及该分布式大容量存储系统的处理组件采用的各种方法,以便提供其中随后描述表示本发明实施例的分级时标的情境。然而,如后所述,分级时标可以在许多其它分布式处理系统中找到广泛的应用。
FAB介绍
联合砖(brick)阵列(“FAB”)结构表示一种用于大容量存储器的新的高度分布式方法。图1示出了根据本发明一个实施例的FAB大容量存储系统的高级简图。FAB大容量存储系统(后面称作“FAB系统”),包括多个小的分立组件数据存储系统或者大容量存储设备102-109,它们通过第一通信媒质110互相通信,并且能够通过第二通信媒质114从多个远程主计算机112-113接收请求并且向其发送回复。每个分立的组件数据存储系统102-109可以称作“砖”。一个砖可以包括接口,通过该接口能够从远程主计算机接收请求,并且将对于接收到的请求的响应传送回该远程主计算机。FAB系统的任意砖可以从主计算机接收请求,并且对该请求作出响应。FAB系统的一个砖相对于任意特定请求表现为协调器的角色,并且协调响应于特定请求时涉及的所有砖的操作,并且FAB系统中的任意砖相对于给定请求都可以表现为协调器的角色。因此,FAB系统为一种主要由软件实现的对称分布式计算系统。在某些可选实施例中,可以采用单一的网络使砖互连以及使FAB系统与远程主计算机互连。在其它可选实施例中,可以采用多于两个网络。
图2示出了根据本发明一个实施例的示例性FAB砖的高级别简图。图2所示的FAB砖包括12个SATA盘驱动器202-213,它们与盘I/O处理器214对接。该盘I/O处理器214通过一个或多个高速总线216与中央桥设备218互连。该中央桥218又和一个或多个通用处理器220、主I/O处理器222、砖间I/O处理器22以及一个或多个存储器226-228互连。该主I/O处理器222提供到第二通信媒质(图1中的114)的通信接口,该砖通过该接口与远程主计算机通信。砖间I/O处理器224提供到第一通信媒质(图1中的110)的通信接口,该砖通过该接口与FAB的其它砖通信。一个或多个通用处理器220执行控制程序,在许多任务和职责中,该控制程序特别用于处理来自远程主计算机和远程砖的请求,管理存储在一个或多个存储器226-228中和存储设备202-213上的状态信息,以及管理该砖内数据存储和数据一致性。该一个或多个存储器用作控制进程使用的数据以及各种实体的存储位置(包括时标和数据结构)的高速缓冲存储器,该控制进程控制对于FAB系统内存储的数据的存取以及保持FAB系统内的数据处于一致状态。该存储器通常包括易失和非易失性存储器。在以下的讨论中,一个或多个通用处理器、一个或多个存储器以及最初提到过包含一个或多个的其它组件可以按照单数引用,以便避免重复短语“一个或多个”。
在本发明的某些实施例中,FAB中的所有砖基本上是相同的,运行相同的控制程序,在其存储器226和大容量存储设备202-213内维持基本上相同的数据结构和控制信息,并且通过I/O处理器向主计算机、FAB内的其它砖和内部盘驱动器提供标准接口。在本发明的这些实施例中,在控制程序版本、特定模型和内部盘驱动器的能力、各种硬件组件的版本以及其它变化方面,FAB内的砖相互之间可以稍微不同。接口和控制程序都是为了向后和向前兼容性而设计的,从而使得FAB内容许这些变化。
每个砖还可以包含图2中未示出的大量其它组件,包括一个或多个电源、冷却系统、控制面板或者其它外部控制接口、标准随机存取存储器以及其它的这种组件。砖是比较简单易懂的设备,通常由商品组件构成,包括商品I/O处理器和盘驱动器。采用12个100GB SATA盘驱动器的砖提供了1.2KG字节的存储容量,仅需要该存储容量的一部分来供内部使用。FAB可以包括数百或者数千个砖,如果是大FAB系统,目前设想其包含5,000到10,000个砖,从而提供拍它(“PB”)字节的存储容量。因此,FAB大容量存储系统与当前的盘阵列和网络附加存储设备相比,在存储容量、成本效率方面都有巨幅的提高。
冗余性
诸如FAB系统的大容量存储系统不仅提供了大量的存储容量,还提供并管理冗余存储,因此如果由于砖故障、盘驱动器故障、盘驱动器上特定柱面、轨道、扇区或者块的故障、电子组件的故障或者其它故障造成了部分存储数据的丢失,则能够根据该大容量存储系统存储并管理的冗余数据无缝且自动地恢复丢失的数据,而无需主计算机的介入或者使用者的手动介入。对于重要的数据存储应用而言,包括数据库系统以及企业关键性数据,通常使用两个或多个大规模大容量存储系统来存储并维持数据的多个地理分散的实例,从而提供较高级别的冗余性,使得即使是灾难性事件也不会导致不可恢复的数据损失。
在本发明的某些实施例中,FAB系统自动地支持至少两种不同类型的较低级别的冗余性。第一类冗余性涉及砖级别镜像,换句话说就是在两个或多个砖上存储数据对象的多个分离的副本,使得一个砖的故障不会导致不可恢复的数据损失。图3-4图示了数据镜像的概念。图3图示了根据本发明实施例的数据对象302和三个砖304-306的内容的逻辑表示。该数据对象302包括15个连续的数据单元,例如数据单元308,在图3中将这些数据单元编号为“1”到“15”。数据对象可以是卷、文件、数据库或者其它类型的数据对象,数据单元可以是块、页面或者其它的这种连续编址的存储位置组。图4图示了根据本发明实施例数据对象30在三个砖304-306上的三重镜像冗余存储。三个砖中的每一个包含数据对象302内全部15个数据单元的副本。在许多镜像图示中,将数据单元的布局表示为在数据对象所有镜像副本中都是相同的。然而,实际上,砖可以选择将数据单元存储在其内部盘驱动器上的任何位置。在图4中,所示的数据对象302内数据单元的副本在三个不同砖内处于不同的次序和位置。因为三个砖304-306中的每个砖存储了数据对象的完整副本,所以即使在三个砖中的两个出现故障时也能够恢复该数据对象。单个砖故障的概率通常比较小,三个砖镜像的全部三个砖都故障的概率总体而言是及其小。一般而言,FAB系统可以存储数百万、数十亿、数万亿或者更多的不同数据对象,每个不同的数据对象可以在该FAB系统内的不同数量的砖上独立地镜像。例如,一个数据对象可以在砖1、7、8和10上镜像,而另一个数据对象可以在砖4、8、13、17和20上镜像。
第二类冗余性称作“擦除编码”冗余。擦除编码冗余要比镜像冗余稍微更加复杂些。擦除编码冗余通常采用Reed-Solomon(里德-所罗门)编码技术,该技术用于通信信息以及通过噪声信道传递的其它数字数据的错误控制编码。这些错误控制编码技术是二进制线性编码的特定实例。
图5示出了说明擦除编码冗余的高级别简图。在图5中,将包含n=4个数据单元的数据对象502分布在多个(大于n)砖504-509上。首先的n个砖504-506均存储n个数据单元中的一个。最后的m=2个砖508-509存储从该数据对象算得的校验和或者奇偶性数据。图5所示的擦除编码冗余方案为m+n擦除编码冗余方案的实例。因为n=4且m=2,所以将图5所示的特定m+n擦除编码冗余方案称作“4+2”冗余方案。许多其它的擦除编码冗余方案也是可能的,包括8+2、3+3以及其它方案。一般而言,m小于或等于n。只要m+n个砖中m个或者更少的砖故障,无论故障的砖是否包含数据或者奇偶值,都能够恢复整个数据对象。例如,在图5所示的擦除编码方案中,能够彻底地恢复数据对象502,无论任何一对砖、例如砖505和508出现故障都能够恢复。
图6利用与图3和4中所使用的相同图解惯例表示了示例性3+1擦除编码冗余方案。在图6中,15个数据单元的数据对象302分布在四个砖604-607上。该数据单元在四个盘上呈条带状,其中该数据对象的每3个数据单元顺序地分布在砖604-606上,并且该条带的校验和或者奇偶性数据单元放置在砖607上。图6中由箭头610-612表示了由3数据单元608构成的第一条带。在图6中,尽管校验和数据单元都位于单一砖607中,但是各个条带可以不同地对准各个砖,其中每个砖包含一部分校验和或者奇偶性数据单元。
通常,通过数学计算数据单元每个字节、字或者长字的校验和或者奇偶性数据位来实施擦除编码冗余。因此,从n个数据位计算m个奇偶性数据,其中n=8、16或32,或者2的更高次幂。例如,在8+2擦除编码冗余方案中,为每个数据字节生成两个奇偶性校验位。因此,在8+2擦除编码冗余方案中,数据的8个数据单元生成2个校验和或者奇偶性数据位的数据单元,所有数据单元能够包含在10-数据-单元条带中。在以下的讨论中,数据“字”是指编码出现的数据单元粒度,并且可以从比特到长字或者更大长度的数据单元变化。在数据存储应用中,该数据单元粒度典型地可以为512字节或更大。
可以按照全部n个数据字的函数,即函数Fi(d1,d2,......,dn)计算第i个校验和字ci,其为每个数据字dj乘以系数fi,j的组合,如下:
在矩阵表示法中,该等式变为:
或者
C=FD
在里德-所罗门技术中,将函数F选择为m×n范德蒙(Vandermonde)矩阵,其中元素fi,j等于ji-1,或者:
如果将特定的字dj修改为具有新值的d’j,则能够按照以下等式计算新的第i个校验和字ci’:
c’i=ci+fi,j(d’j-dj)
或者:
c’=C+FD’-FD=C+F(D’-D)
因此,从先前的校验和字和矩阵F的单列就容易地计算新的校验和字。
通过矩阵求逆恢从复条带中丢失的字。按照如下构造矩阵A和列矢量E:
可以容易地看出:
AD=E
或者:
能够去除矩阵A的任意m行以及矢量E的相应行,以便生成经修改的矩阵A’和E’,其中A’为方矩阵。然后,通过矩阵求逆能够恢复表示原始数据字的矢量D,如下:
A’D=E’
D=A’-1E’
因此,当擦除或丢失了m个或更少的数据或校验和字时,能够从矢量E中去除包含m个或更少的丢失数据或校验和字的m个数据或校验和字,以及从矩阵A中去除相应的行,并且能够通过矩阵求逆恢复原始数据或者校验和字,如上所示。
尽管针对实数利用加法、减法、乘法和除法的类似实数算术运算容易地实施矩阵求逆时,但是用于数字错误控制编码的离散值的矩阵和列元素仅仅当离散的值构成了在相应离散算术运算下封闭的算术字段时才适用于矩阵乘法。一般而言,为长度为w的字计算校验和比特:
w位的字能够具有2w个不同值中的任意一个值。能够构成具有2w个元素的称作伽罗瓦(Galois)字段的数学字段。方便的是,伽罗瓦字段的元素的算术运算为:
a*b=anti log[log(a)+log(b)]
a÷b=anti log[log(a)-log(b)]
其中利用包含w度的本原多项式的传播方法计算Galois字段元素的对数和反对数表。
概念上,镜像冗余方案更加简单,并且容易使其本身适合各种重新配置运算。例如,如果3砖的3重-镜像-冗余方案的一个砖故障,则能够在双重-镜像-冗余方案下将其余两个砖重新配置为2-砖的镜像对。可选的是,能够选择新的砖替换故障的砖,并且将数据从一个仍有效的砖复制到新的砖,以恢复3-砖的3重-镜像-冗余方案。相反,擦除编码冗余方案的重新配置就没有这样简单。例如,一个条带内的每个校验和字取决于该条带的所有数据字。如果希望将4+2擦除编码冗余方案变换为8+2擦除编码冗余方案,则可以重算所有校验和位,并且可以将数据重新分布在用于新的8+2方案的10个砖上,而不是将4+2方案的6个砖的相关内容复制到新的位置。此外,对于相同的擦除编码方案而言,条带尺寸的变化甚至可能涉及重算所有校验和数据单元以及在新的砖位置上重新分布数据。
在大多数情况下,改变成擦除编码方案涉及到根据从旧的配置中获取的数据而完全构建新的配置,而不是在镜像冗余方案中那样删除多个砖中的一个或者增加砖,并且将数据从原始砖复制到新的砖。通常在空间方面镜像的效率不如擦除编码,但是在处理周期的时间和成本方面却更加高效。
FAB存储单元
如上所述,FAB系统可以提供大量的数据存储空间。可以将总体存储空间逻辑划分为分级数据单元,处于每个非最低分级级别的数据单元逻辑上由下一最低分级级别的数据单元构成。可以将逻辑数据单元映射到一个或多个砖内的物理存储空间。
图7图示了表示本发明一个实施例的当前FAB实现方案中采用的分级数据单元。最高级别数据单元称作“虚拟盘”,可以考虑将FAB系统内的全部可用存储空间划分为一个或多个虚拟盘。在图7中,所示的总存储空间702划分为5个虚拟盘,其中包括第一虚拟盘704。虚拟盘能够配置为具有大于或等于下一最低分级数据单元尺寸的任意尺寸,称作“段”。在图7中,所示的第三虚拟盘706逻辑划分为多个段708。这些段可以是连续定序的,并且一起构成了对应于虚拟盘的线性逻辑存储空间。如图7所示,根据特定冗余方案,每个段、例如段4(图7中的710)可以分布在多个砖712上。该段表示了砖上数据分布的粒度。例如,在图7中,根据8+2擦除编码冗余方案,段4(图7中的710)可以分布在砖1-9和13上。因此,在8+2擦除编码冗余方案下,砖3可以存储该段数据的1/8,砖2可以存储该段的奇偶性数据的一半,前提是奇偶性数据与段数据分开存储。每个砖、例如砖7(图7中的714)可以选择将段或者段部分分布在砖716的任意一个内部盘上或者分布在高速缓冲存储器中。当存储在内部盘上或者高速缓冲存储器中时,逻辑上认为段或段部分包括多个页面,例如图7所示的页面718,每个页面又包括连续的块序列,例如图7所示的块720。该块(例如图7中的720)为数据单元级别,时标与该数据单元级别相关,并且根据下面讨论的存储寄存器数据一致性方式对该数据单元级别进行管理。在正在研发的一种FAB系统中,段包含256个连续的兆字节,页面包含8个兆字节,块包含512个字节。
图8A-D图示了逻辑数据单元到表示本发明一个实施例的FAB系统的砖和内部盘的假定映射。图8A-D都采用了相同的图解惯例,接着参照图8A进行讨论。将FAB系统表示为16个砖802-817。每个砖表示为包含四个内部盘驱动器,例如砖802内的内部盘驱动器820-823。在图8A-D中,在图的左侧表示了逻辑数据单元。图8A中所示的逻辑数据单元为整个可用存储空间826。内部盘驱动器的方形表示内的阴影表示该图所示的逻辑数据单元所映射到的内部盘驱动器的区域。例如,在图8A中,所示的整个存储空间826映射到所有砖的全部内部盘驱动器上可用的整个空间上。应当注意,利用每个砖的控制逻辑电路可以保留少量内部存储空间以用于控制和管理,但是图8A中未示出该内部空间。而且,数据在写入盘之前可能驻留在随机存取存储器中的高速缓存中,但是为了简化说明,对于图8A-D认为该存储空间仅包含每个砖的4个内部盘。
图8B图示了虚拟盘逻辑数据单元828到FAB系统800的存储空间的示例性映射。图8B图示了可以将虚拟盘映射到FAB系统800的砖内的许多、甚至全部内部盘的部分中。图8C图示了虚拟盘映像逻辑数据单元830到FAB系统800的内部存储空间的示例性映射。可以将虚拟盘映像逻辑数据单元映射到FAB系统内大量砖的大部分内部存储空间中。虚拟盘映像逻辑数据单元表示虚拟盘的副本或者映像。虚拟盘可以复制为两个或多个虚拟盘映像,每个虚拟盘映像位于FAB系统内砖的分立部分中,以便提供高度冗余性。虚拟盘复制例如可以使虚拟盘复制到FAB系统内砖的地理位置上不同、分立的部分上,使得在一个地理位置上的大规模故障不会导致虚拟盘数据不可恢复的损失。
图8D图示了段832到FAB系统800的砖内的内部存储空间的示例性映射。如图8D所示,可以将段映射到FAB系统内砖较小子集的内部盘的许多小部分上。如上所述,在本发明的许多实施例中,段为根据较低级别冗余方案分布数据的逻辑数据单元级别,其中该方案包括擦除编码方案和镜像方案。因此,如果不需要数据冗余,则能够将段映射到单一砖的单一盘驱动器。然而,对于大多数用途而言,至少将这些段镜像到两个砖。如上所述,根据各种考虑因素(包括可用空间以及包括充分利用内部盘驱动器各种特性(包括头移动延迟、旋转延迟、存取频率)的最佳分布)和其他考虑因素,砖在它的内部盘之中分布段的页面或者段的一部分。
图9图示了表示本发明一个实施例的FAB系统内采用的逻辑数据单元。可以将全部可用数据存储空间902划分成虚拟盘904-907。当需要时,将这些虚拟盘复制到多个虚拟盘映像中。例如,将虚拟盘904复制到虚拟盘映像908-910中。如果未复制虚拟盘,则可以将该虚拟盘视为包括单一虚拟盘映像。例如,虚拟盘905对应于单一虚拟盘映像912。每个虚拟盘映像包含有序段序列。例如,虚拟盘映像908包含有序段表914。根据冗余性方案,将每个段分布在一个或多个砖上。例如,在图9中,根据8+2擦除编码冗余方案,将段916分布在10个砖918上。另一个实例是,根据三重镜像冗余方案,将图9所示的段920分布在三个砖922上。
FAB的数据状态描述的数据结构
如上所述,FAB系统内的每个砖实际上可以执行相同的控制程序,每个砖能够接收并且响应来自远程主机的请求。因此,每个砖包含表示该FAB系统的总体数据状态的数据结构,下至、但通常不包括由内部易失随机存取存储器、非易失存储器和/或内部盘空间中的各个砖适当管理的砖特定状态信息,这就像人体的每个细胞包含整个组织的整个DNA编码结构一样。总体数据状态包括图9所示的分级数据单元的尺寸和位置,以及涉及砖工作状态或可用状态以及存储各个段所依照的冗余方案的信息。一般而言,不将砖特定数据状态信息,包括存储在砖内的数据的内部页面和块地址视为该FAB系统总体数据状态的一部分。
图10A图示了每个砖所维持的数据结构,其描述了FAB系统的总体数据状态并且表示了本发明的一个实施例。该数据结构总体上是分级的,以便镜像前一小节中描述的分级逻辑数据单元。在最高级别,该数据结构可以包括虚拟盘表1002,该表的每个条目描述一个虚拟盘。每个虚拟盘表条目(“VDTE”)可以引用一个或多个虚拟盘映像(“VDI”)表。例如,VDTE 1004引用图10A中的VDI表1006。VDI表可以包括对该虚拟盘映像的每个段的段配置节点(“SCN”)的引用。多个VDI表条目可以引用单一的SCN,以便保存专用于该数据结构的存储器和存储空间。在图10A中,VDI表条目1008引用SCN1010。每个SCN可以表示一种或两种配置组(“cgrp”)。例如,在图10A中,SCN1010引用cgrp1012。每个cgrp可以引用一种或多种配置(“cfg”)。例如,在图10A中,cgrp1014引用cfg1016。最后,每个cfg可以与单一布局数据结构元素相关联。例如。在图10A中,cfg1016与布局数据结构元素1018相关联。该布局数据结构元素可以包含在与其相关联的cfg内,或者可以与该cfg不同,并且可以在相关联的cfg内包含砖的指示。VDI表可以非常大,并且可以采用高效存储方案来有效地将VDI表或者部分VDI表存储到存储器和非易失存储媒质中。例如,类似于UNIX的i节点结构,其具有直接包含对各段引用的根节点,以及具有从包含i节点引用的节点到附加的段引用包含节点的间接引用或双重间接引用的附加节点。其它的高效存储方案也是可能的。
对于VDI表以及描述由FAB系统总体数据状态的每个砖所维持的数据结构的所有其它数据结构元素而言,可以使用各种物理表示以及存储技术。作为一个实例,能够分配可变长度的数据结构元素,作为具有足够尺寸的固定长度数据结构元素,以包含最大可能的或者最大预期数量的数据条目,或者可变长度的数据结构元素可以表示为链接表、树或者其它的这样动态数据结构元素,能够按照需要实时地调整这些元素的大小,从而容纳新的数据或者去除不再需要的数据。图10A和11A-H中所示的在树状表示中表示为独立且不同的节点在实际的实现方案中可以一起存储在一个表中,而可选的是,可以将示为存储在节点或者表中的数据结构元素存储在链接表、树或者其它更复杂的数据结构实现方案中。
如上所述,可以使用VDI来表示虚拟盘的复制。因此,能够将从VDTE到VDI的分级扇出视为表示虚拟盘的复制。可以采用SCN,从而将段从一种冗余方案迁移到另一种。希望或必须的是将根据4+2擦除编码冗余方案分布的段转变为8+2擦除编码冗余方案。段的迁移涉及为分布在潜在新的砖组上的新冗余方案生成空间,使新的配置与现有配置同步,并且一旦新的配置与现有配置同步,则去除现有配置。因此,在出现这种迁移的一定时间段之内,SCN可以同时引用两个不同的cgrp,这两个不同的cgrp表示包括一种冗余方案下的现有配置和不同冗余方案下的新配置的瞬态。相对于该瞬态的两种配置,实施针对正在迁移的段所实施的数据改变和数据状态改变操作,直到实现了完全同步为止,并且能够去除旧的配置。同步涉及为新配置中的所有砖建立定额(quorum)(如下所述),按照需要将数据从旧的配置复制到新的配置,以及实施所有数据更新,这种更新是对移动过程中的段实施操作所必须的。在某些情况下,保持该瞬态,直到完整建立了新的配置为止,这是因为建立新的配置过程中的故障会使该配置不可恢复地损坏。在其它情况下,包括下面讨论的情况,仅需要最小的同步,这是因为旧配置中的所有现有定额在新配置中仍然有效。
其上根据现有冗余方案分布了段的砖集合可以与其上根据新的冗余方案分布了段的砖集合相交。因此,FAB系统内的块地址可以包括描述该段正在移动的情况下的特定冗余方案或者砖的角色的附加字段或对象。因此,块地址区分单一砖中在两种不同冗余方案下存储的相同段的两个块。图10B图示了包括根据本发明一个实施例的砖角色的砖段地址。图10B所示的地址包括以下字段:(1)包含砖(其包含块地址所引用的块)的身份的砖字段1020;(2)包含段(其包含块地址所引用的块)的身份的段字段1022;(3)包含段字段中标识的段内块的身份的块字段1024;(4)包含存储段所依照的冗余方案的指示的字段1026;(5)在擦除编码冗余方案下存储该段的情况下,包含擦除编码冗余方案内砖字段标识的砖的砖位置的指示的字段1028;(6)在擦除编码冗余方案下存储该段的情况下,包含擦除编码冗余方案的条带尺寸的指示的字段1030。块地址可以根据需要包含附加字段,用以完全描述给定FAB实现方案中块的位置。一般而言,字段1026、1028和1030一起构成限定了存储所引用的块的砖所代表的角色的砖角色。可以采用冗余方案、砖位置和条带尺寸的各种数字编码中的任意一个使专用于砖角色编码的比特数量最小化。例如,在FAB实现方案针对各种擦除编码冗余方案仅采用少数不同条带尺寸的情况下,可以由各种计数值或者换句话说由足够包含少数不同条带尺寸的数字表示的较小位字段来表示条带尺寸。
当cgrp正在经重新配置时,其可以引用多个cfg数据结构元素。重新配置可能涉及其上分布了段的砖的变化,但不包括从镜像冗余方案到擦除编码冗余方案的变化、从一种编码冗余方案如4+3到另一种擦除编码冗余方案如8+2的变化,或者涉及包括重构或改变多个砖内容的其它这种变化。例如,重新配置可能涉及将存储在砖1、2和3上的三重镜像重新配置为存储在砖2和3上的双重镜像。
cfg数据结构元素通常描述一个或多个砖的集合,这些砖在特定冗余方案下一起存储特定的段。cfg数据结构元素通常包含关于cfg数据结构元素表示的配置内砖的可用状态或者工作状态的信息。
布局数据结构元素例如图10A中的布局1018,其包括在特定冗余方案下将特定的段分配到的所有砖的标识符。布局数据结构元素可以包括一个或多个字段,这些字段描述了存储所表示的段所依照的特定冗余方案,并且可以包括附加字段。图10A所示的数据结构的所有其他元素可以根据需要包括附加字段和说明性子元素,从而有助于根据该数据结构表示的数据分布方案进行数据存储和维护。在图10A的底部,为处于连续级别的数据结构元素之间的映射关系提供了指示。应当注意,一个或多个VDI表内的多个不同段条目可以引用单一SCN节点,从而表示不同的段根据相同冗余方案在相同砖集合上的分布。
由描述FAB系统总体数据状态以及表示本发明一个实施例的每个砖所维持的数据结构为不断改变的动态表示,并且在存储、访问和删除块、添加和删除砖、砖和互连故障、FAB系统的冗余方案和其他参数和特性通过管理接口变化以及其他事件发生时,其引起各种控制例程使附加状态变化。为了避免控制和串行化涉及部分数据结构的操作的锁定方案的过大开销,可以将从cgrp级别向下到布局级别的所有数据结构元素视为不可变的。当其内容或者互连需要改变时,添加具有新的内容和/或互连的新数据结构元素,并且最后删除对前面版本的引用,而不是锁定、改变和解锁处于cgrp级别向下到布局级别的数据结构元素。在通过建立新的定额并且实施任意需要的更新使旧的和新的数据结构元素表示的数据同步之后,按照这种方式所替换的数据结构元素最终变为孤立的,然后垃圾回收孤立的数据结构元素。通过将从cgrp级别向下到布局级别的数据结构元素称作“不可变的”,能够概括这种方法。
由描述FAB系统的总体数据状态并且表示本发明一个实施例的每个砖维持的数据结构的另一个方面在于:每个砖可以维持存储器内或者部分存储器内版本的数据结构,从而快速访问最频繁且最近访问过的级别和数据结构元素,以及维持存储在非易失数据存储媒质上的持久版本。存储器内版本的数据结构的数据元素可以包括没有包含在持久版本的数据结构中的附加字段,并且其总体上在图10A、11A-H和随后的附图中都未示出。例如,存储器内版本可以包含逆向映射元素,例如指针,除了该图所示的指针向下方向表示的自上而下遍历之外,该逆向映射元素允许数据结构沿着自下而上、横向和更复杂的方向的高效遍历。存储器内版本的数据结构的某些数据结构元素还可以包括引用计数字段,从而有助于垃圾回收用于改变包含数据结构的砖状态的控制例程执行的操作以及协调这些操作。
图11A-H图示了在表示本发明一个实施例的FAB系统内的图10A所示的数据描述数据结构中反映出来的各种不同类型的配置变化。图11A-D图示了简单的配置变化,包括砖的可用状况。在这种情况下,根据三重镜像冗余方案(图11A中的1102)分布在砖1、2和3上的段重新配置为:(1)由于砖3的修复,根据三重镜像方案(图11B中的1104)分布在砖1、2和3;(2)由于砖3的故障和由砖4内的空闲存储空间替换砖3,根据三重镜像方案(图11C中的1106)分布在砖1、2和4;或者(3)由于砖3的故障,根据双重镜像方案(图11D中的1108)分布在砖1和2。当首先检测到砖3的故障时,将包括新的cfg1110以及用于砖3的指示该砖3失效的砖可用状况指示1114的新的cgrp1112以及初始cfg1011的副本添加到数据结构,从而取代初始的cgrp、cfg以及分布段(图11中的1103)的布局表示。针对砖3的可用状况存储的“失效砖”指示是图10A所示的总体数据结构的重要特征。“失效砖”状态可以使随后故障的砖的先前参与的记录保存在数据结构中,从而允许可能需要获知该故障砖的先前参与的随后同步和其他操作。一旦完成了初始配置与新配置之间的任意同步,包括为由于砖3的故障而没有当前定额的砖确定新的定额,并且将分布段1116的新表示添加到数据结构,则能够删除并垃圾收集包括数据结构元素1110-1112的分布段的瞬态2-cfg表示,从而留下具有表示砖3故障的单一cfg数据结构的分布段1116的最终描述。在图11A-D中以及随后的附图中,仅表示了数据结构的相关部分,假设理解了例如一个或多个SCN节点引用了图11A所示的cgrp。
图11B-D描述了砖3故障的三种不同结果,每个结果以图11A底部所示的分布段1116的表示开始。所有三种结果包括示为数据结构中间状态的瞬态2-cfg状态,其由引用两个新的cfg数据结构元素的又一个新的cgrp构成,其中一个新的cfg数据结构元素包含来自图11A底部所示的分布段1116的表示的cfg副本,另一个包含新的砖可用情况信息。在图11B中,修复砖3,其中瞬态2-cfg状态1118包括对砖3的故障状态和砖3的修复状态的说明。在图11C中,由砖4上的空闲存储空间取代砖3,其中瞬态2-cfg状态1120包括对砖3的故障状态和砖4取代了砖3的新配置的说明。在图11D中,砖3完全故障,该段重新配置为分布在砖2而不是砖3上,其中瞬态2-cfg状态1122包括对砖3的故障状态和数据分布在砖1和2上的双重镜像配置的说明。
图11E-F图示了根据4+2擦除编码冗余方案在其上分布段的砖的损失以及新砖对损失砖的替代。起初,段分布在砖1、4、6、9、10和11上(图11E中的1124)。当检测到砖4的故障时,瞬态2-cfg状态1126获得了包括引用两个新cfg数据结构元素的新cgrp在内的、表示砖4故障的新cfg1128。然后能够垃圾收集分布段1124的初始表示。一旦相对于旧配置实施了新配置与故障砖4的同步,并且已经添加了对具有引用表示砖4故障的单一cfg数据结构元素的新cgrp的分布段1132的说明,则能够垃圾收集瞬态2-cfg表示1126。接着,添加在取代砖4先前提供的存储空间的砖5上具有空闲存储空间的新配置,以生成瞬态2-cfg状态1133,并且继而垃圾收集先前的表示1132。一旦完成了新配置与取代砖4的砖5的同步,并且添加了分布段的最终的新表示1136,则能够垃圾收集瞬态2-cfg表示1134。
在诸如图11F中的cfg1135的新配置与诸如图11F中的cfg1134的旧配置相同步过程中,2-cfg瞬态的两种可选配置,例如图11F中的cfg1134和1135同时维持在图11A-F所示的瞬态2-cfg表示中。例如,当正根据先前段落中讨论的矩阵求逆方法重构砖5的内容时,将向该段所发出的新WRITE操作向这两种配置发出,从而确保对每种配置中的砖定额成功地完成WRITE操作。下面讨论定额和其他一致性机制。最后,当完全重构了新配置1135并且新配置的数据状态完全同步到旧配置1114的数据状态时,能够通过用仅包括最终配置的新表示1136替换整个表示1133来去除旧配置,然后垃圾收集瞬态2-cfg表示。通过不改变cgrp和更低级别的现有数据结构元素,而是相反添加通过2-cfg瞬态的新数据结构元素,能够完成适当的同步,并且无需采用锁定或者其他串行化技术来控制数据结构的访问。WRITE(写入)操作说明了改变一个或多个砖内的数据状态的对数据的操作,因此在这里的讨论中,将WRITE操作用于表示操作或任务的种类,在执行这些操作或任务的过程中,由于FAB系统的数据状态改变产生了数据一致性问题。然而,其他操作和任务也可以改变数据状态,并且在FAB实现方案中实施其他这种操作和任务时,上述技术可以在各个配置之间适当转变。在其他情况下,当初始配置下块的所有定额在新配置中基本上保持不变且有效时,可能不需要2-cfg瞬态表示,或者可能不需要保持特别长的时段。例如,当双重镜像段重新配置为无冗余配置时,由于两个砖中的一个故障,所有定额保持有效,这是因为双镜像配置中的大多数砖需要对每个块的值达成一致,这意味着全部砖在先前配置中一致,并且不存在由于两个砖之一的损失造成的不一致或者损坏的定额。
图11G图示了更复杂的配置变化,包括在FAB系统的砖上分布段所依照的冗余方案的变化。在图11G所示的情况下,起初根据4+2擦除编码冗余方案分布在砖1、4、6、9、10和11上的段(图11G中的1140)迁移到砖4、13和18上的三重镜像冗余方案(图11G中的1142)。改变冗余方案包括保持从SCN节点1146引用的两个不同cgrp数据结构元素1144-1145,同时使新配置1128与先前配置1140同步。SCN级别的控制逻辑使WRITE操作的方向与两个不同配置相协调,同时使新配置与旧配置同步,这是因为用于确保WRITE操作一致执行的技术在两种不同冗余方案中是不同的。因为可以锁定SCN节点或者可以在操作上另外控制对SCN节点的访问,所以可以在迁移过程中改变SCN节点的状态。然而,因为SCN节点可以被多个VDI表条目所引用,所以通常为迁移操作分配新的SCN节点1146。
最后,图11H图示了FAB系统内的虚拟盘的示例性复制。由引用单一VDI表1150的VDTE条目1148表示该虚拟盘。虚拟盘的复制包括生成新的VDI表1152,从VDTE1132以及原始VDI表1150同时引用该新的VDI表。控制逻辑分级内虚拟盘级别的控制逻辑协调新VDI与先前VDI的同步,从而继续到在同步过程中涉及该虚拟盘的字段WRITE操作。
图10A所示的数据说明数据结构内的分级级别反映了FAB系统中每个砖执行的控制逻辑内的控制逻辑级别。该控制逻辑级别操纵数据状态说明数据结构中的相应级别的数据结构元素以及该级别以下的数据结构元素。起初在顶部处理级别接收来自主计算机的请求,并且将其作为要执行的一个或多个操作通过顶部处理级别引导到适当的虚拟盘。然后,虚拟盘级别的控制逻辑将该操作引导到表示虚拟盘的一次或多次复制的一个或多个VDI。VDI级别的控制逻辑确定了该操作所涉及的一个或多个VDI中的段,并且将该操作引导到适当的段。SCN级别的控制逻辑将该操作引导到适当的配置组,并且该配置组级别的控制逻辑将该操作引导到适当的配置。配置级别的控制逻辑将该请求引导到该配置的砖,砖内的内部砖级别控制逻辑将该请求映射到内部盘驱动器内的特定页面和块,并且协调局部、物理访问操作。
存储寄存器模型
FAB系统可以采用用于基于定额的分布式READ和WRITE操作的存储寄存器模型。存储寄存器为数据的分布单元。在当前FAB系统中,将砖当作存储寄存器。
图12-18图示了分布式存储寄存器的基本操作。如图12所示,该分布式存储寄存器1202优选为抽象或虚拟寄存器,而不是一个特定电子设备硬件中实现的物理寄存器。在处理器或者计算机系统1204-1208上运行的每个进程采用存储在动态存储器中的少量值,并且可选的是在非易失存储器中备份,以及采用少量分布式存储寄存器相关的例程,从而共同来实现分布式存储寄存器1202。至少,一组所存储的值和例程与访问该分布式存储寄存器的每个处理实体相关联。在一些实现方案中,在物理处理器或者多处理器系统上运行的每个进程可以管理其自身存储的值和例程,在其他实现方案中,在特定处理器或者多处理器系统上运行的进程可以共享所存储的值和程序,假设:局部协调共享以防止处理器上运行的多个进程引起的并发访问问题。
在图12中,每个计算机系统保持分布式存储寄存器的局部值1210-1214。一般而言,不同计算机系统存储的局部值通常是相同的,并且等于分布式存储寄存器1202的值。然而,偶然情况下,这些局部值可以不都是相同的,如图12所示的实例中一样,在这种情况下,如果大多数计算机系统当前保持单个局部存储的值,则该分布式存储寄存器的值为占大多数保持的值。
分布式存储寄存器向多种互相通信进程提供两个基本的高级别功能,其共同实现了该分布式存储寄存器。如图13所示,一个进程能够将READ请求1302引导到该分布式存储寄存器1202。如果分布式存储寄存器当前保存有效值,如图14中分布式存储寄存器1202内的值“B”所示,则将该当前有效值返回1402到请求进程。然而,如图15所示,如果该分布式存储寄存器1202当前不包含有效值,则将值NIL 1502返回到请求进程。该值NIL为不能够在分布式存储寄存器内所存储的有效值的值。
一个进程还可以将值写入分布式存储寄存器。在图16中,一个进程将WRITE信息1602引导到分布式存储寄存器1202,该WRITE信息1602包括将要写入该分布式存储寄存器1202的新值“X”。如图17所示,如果发送到该分布式存储寄存器的值成功地重写了当前存储在该分布式存储寄存器中的任何值,则将布尔值“TRUE”返回1702到将WRITE请求引导到该分布式存储寄存器的那个进程。否则,如图18所示,WRITE请求失效,并且将布尔值“FALSE”返回1802到将WRITE请求引导到该分布式存储寄存器的那个进程,存储在该分布式存储寄存器中的值未被WRITE请求改变。在某些实现方案中,该分布式存储寄存器返回二进制值“OK”和“NOK”,其中OK表示成功执行了WRITE请求,NOK表示该分布式存储寄存器的内容是不确定的,或者换句话说,表示WRITE可能成功或可能没有成功。
图19图示了由一个进程或者处理实体Pi使用的组件,该进程或者处理实体Pi与多个其他进程和/或处理实体Pj-i共同实现分布式存储寄存器。一个处理器或者处理实体使用了三个低级别原语:定时器机构1902、唯一ID1904和时钟1906。该处理器或者处理实体Pi利用局部定时器机构1902,它可以使Pi设定一个定时器达到指定的时间段,然后等待该定时器期满,并且当该定时器期满时通知该Pi,以便继续某一操作。一个进程能够设定定时器和连续执行,从而检查或轮询定时器的期满,或者一个进程能够设定定时器、挂起执行并且在定时期满时能够被再次唤醒。在任一种情况下,该定时器允许该进程在逻辑上挂起操作,随后在规定时间周期之后重新开始该操作,或者在规定时间段内执行某一操作,直到该定时器期满为止。该进程或处理实体Pi还具有可靠存储且可靠获取的本地进程ID(“PID”)1904。每个处理器或者处理实体具有相对于共同实现该分布式存储寄存器的所有其他进程和/或处理实体是唯一的本地PID。最后,该处理器处理实体Pi具有实时时钟1906,其与某一绝对时间大致一致。共同实现分布式存储寄存器的所有进程和/或处理实体的实时时钟无需精确同步,但是应当适当反映绝对时间的某一共享概念。大多数计算机,包括个人计算机在内,都包括电池供电系统时钟,其反映当前世界时间值。对于大多数目的,包括实现分布式存储寄存器在内,这些系统时钟无需精确同步,而仅仅近似反映当前世界时间。
每个处理器或者处理实体Pi包括易失存储器1908,在一些实施例中还包括非易失存储器1910。该易失存储器1908用于存储执行的指令和用于分布式存储寄存器协议的多个变量的局部值。该非易失存储器1910用于持久地存储变量,这些变量在一些实施例中用于该分布式存储寄存器协议。变量值的持久存储对崩溃或者通信中断之后的分布式存储寄存器的共同实现方案中的进程的参与提供比较直接的重新开始。然而,不需要持久的存储来恢复该分布式存储寄存器的共同实现方案中的崩溃或者临时隔离的处理器参与。取而代之的是,假设在非持久存储实施例中,存储在动态存储器中的变量值如果丢失则全部丢失,假设适当地重新初始化丢失的变量,并且假设处理器的定额一直保持功能且互连,则该分布式存储寄存器协议正确地工作,并且保持利用该分布式存储寄存器的进程和处理实体的进展。每个进程Pi存储三个变量:(1)val 1934,其保持该分布式存储寄存器的当前局部值;(2)val-ts 1936,其表示与该分布式存储寄存器的当前局部值相关联的时标值;以及(3)ord-ts 1938,其表示与WRITE操作相关联的最近的时标。特别是在非持久存储实施例中,将变量val初始化为值NIL,其不同于由进程或处理实体写入到该分布式存储寄存器的任何值,即因此与所有其他的分布式存储寄存器值不同。类似的是,将变量val-ts和ord-ts的值初始化为值“initialTS”,其小于由用于生成时标值的例程“newTS”返回的任意时标值。假设将val、val-ts和ord-ts一起重新初始化为这些值,如果至少大部分进程和处理实体恢复并且重新开始校正操作,则共同实现的分布式存储寄存器容许通信中断,并且进程和处理实体崩溃。
可以将每个处理器或者处理实体Pi通过基于信息的网络与其他进程和处理实体Pj≠i互连,以便接收1912信息,并且将1914信息发送到其他进程和处理实体Pj≠i。每个处理器或者处理实体Pi包括例程“newTS”1916,当调用该例程时,其返回时标TSi,该时标TSi大于某一初始值“initialTS”。每次调用该例程“newTS”时,其返回大于先前返回的任意时标的时标TSi。而且,处理器或者处理实体Pi调用该newTS所返回的任意时标值TSi应当与任何其他处理器或处理实体Pj调用的newTS所返回的任意时标TSj不同。一种实现newTS的实际方法是使newTS返回包含本地PID1904与系统时钟1906报告的当前时间的连接的时标TS。实现该分布式存储寄存器的每个处理器或者处理实体Pi包括四种不同的处理程序例程:(1)READ(读取)处理程序1918;(2)ORDER(定序)处理程序1920;(3)WRITE(写入)处理程序1922;以及(4)ORDER&READ(定序和写入)处理程序1924。重要的是注意这些处理程序可能需要采用临界部分或者通过锁的单线程的编码部分,从而防止测试和设定各种局部数据值过程中的竞态条件。每个处理器或者处理实体Pi还具有四个操作例程:(1)READ(读取)1926;(2)WRITE(写入)1928;(3)RECOVER(恢复)1930;和(4)MAJORITY(大多数)1932。以下详细讨论四个处理程序例程和四个操作例程。
分布式存储寄存器的正确操作以及利用分布式存储寄存器的进程和处理实体的活性或者进度取决于多个假设。假设每个进程或处理实体Pi没有不良行为。换句话说,每个处理器或者处理实体Pi如实依照分布式存储寄存器协议。另一个假设是共同实现分布式存储寄存器的大多数进程和/或处理实体Pi决不会崩溃或者最终停止崩溃并可靠执行。如上所述,分布式存储寄存器实现方案容许丢失信息、通信中断以及进程和处理实体崩溃。当小于足以破坏进程或者处理实体定额的多个例程或者处理实体崩溃或者隔离时,该分布式存储寄存器仍然正确并且有作用。当足够数量的进程或者处理实体崩溃或者隔离以破坏进程或处理实体的定额时,该系统仍然正确但不起作用。如上所述,所有进程和/或处理实体通过基于信息的网络完全互连。该基于信息的网络可以是异步的,对信息传播时间没有限制。然而,假设该网络具有合理损失特性,其基本上保证了如果Pi从Pj接收信息m,则Pj发送信息m,并且基本上还保证了如果Pi重复地向Pj发送信息m,则Pj最终接收信息m,前提是Pj为正确的进程或者处理实体。而且,如上所述,假设所有进程或者处理实体的系统时钟都合理反映了某一共享时间标准,但无需使它们精确同步。
这些假设对于证明分布式存储寄存器协议的正确性并且保证进度是十分有用的。然而,在某些实际实现方案中,可以违反一个或多个假设,并且获得合理的功能的分布式存储寄存器。此外,可以将附加的安全措施嵌入处理例程和工作例程中,以便克服硬件平台和处理实体中的特定缺陷。
分布式存储寄存器的工作基于定额的概念。图20图示了利用定额确定分布式存储寄存器的当前值。图20利用了图12-18中所使用的相同的图解惯例。在图20中,进程或者处理实体2002-2006中的每一个保持局部变量val-ts,例如进程或者处理实体2002保持的局部变量2007,所述局部变量为分布式存储寄存器保存局部时标值。如果与图16一样,共同实现分布式存储寄存器的各个进程和/或处理实体所保持的大量局部值与该分布式存储寄存器相关联的时标值val-ts一致,则将该分布式存储寄存器2008的当前值视为大多数进程或处理实体所保持的变量val的值。如果大多数进程和处理实体与时标值val-ts不一致,或者没有单一的大多数保持值,则该分布式存储寄存器的内容是不确定的。然而,为了恢复该分布式存储寄存器,大多数进程和/或处理实体然后就能够选择大多数保持值并且就该值达成一致。
图21示出了图19概略表示的例程处理程序和操作例程的伪码实现方案。应当注意,这些伪码实现方案省略了详细的错误处理和低级通信原语、局部锁定的特定细节以及计算机编程领域技术人员可以理解并能容易实现的其他细节。例程“大多数”2102在线2上把来自线程或处理实体Pi的消息向其自身和所有其他例程或处理实体Pji发送,这些例程或处理实体Pj≠i以及Pi一起共同实现了分布式存储寄存器。周期性重新发送该消息,直到接收到适当数量的回复为止,在许多实现方案中,将定时器设为对该步骤施加有限时间和执行限制。然后,在线3-4上,例程“大多数”等待,以接收对该消息的回复,然后在线5上返回接收到的回复。如上所述的大多数程序是正确的假设基本上保证了该例程“大多数”最终返回,无论是否使用了定时器。在实际实现方案中,定时器有助于及时地处理错误发生。注意,通常利用时标或者其他唯一的号码唯一地标识每个消息,从而能够使进程Pi接收到的回复与先前发送的消息相关。
进程“读取”2104从分布式存储寄存器读取值。在线2上,例程“读取”调用例程“大多数”,从而向其自身和其他例程或者处理实体Pj≠i中的每一个发送READ消息。READ消息包括该消息为READ消息的指示,以及与进程Pi保持的局部当前分布式存储寄存器值相关联的时标值val-ts。如果例程“大多数”返回如线3上确定的全都包含布尔值“TRUE”的一组回复,例程“读取”返回局部当前分布式存储寄存器值val。否则,在线4上,例程“读取”调用例程“恢复”。
例程“恢复”2106搜索以通过定额技术确定分布式存储寄存器的当前值。首先,在线2上,通过调用例程“newTS”获得新时标ts。然后,在线3上,调用例程“大多数”以向所有进程和/或处理实体发送ORDER&READ消息。如果进程“大多数”返回的回复中的任意状态都为“FALSE”,则“回复”在线4上返回值NIL。否则,在线5上,将分布式存储寄存器的局部当前值val设为与例程“大多数”返回的回复组中值最高值时标相关联的值。接着,在线6上,再次调用例程“大多数”以发送WRITE消息,该消息包括在线2上获得的新时标ts以及分布式存储寄存器的新局部当前值val。如果所有回复中的状态都具有布尔值“TRUE”,则WRITE操作已成功,并且目前大多数进程和/或处理实体都同意线5上存储在局部副本中的该新值val。否则,例程“恢复”返回该值NIL。
例程“写入”2108将新值写到该分布式存储寄存器。在线2上获得新时标ts。在线3上调用例程“大多数”,用以向所有进程和/或处理实体发送ORDER消息,包括该新时标。如果在例程“大多数”返回的回复消息中返回的任意状态值都为“FALSE”,则在线4上例程“写入”返回值“NOK”。否则,通过经例程“大多数”发送WRITE消息,将值val写入到其他进程和/或处理实体。如果如线6上确定的那样,例程“大多数”返回的回复中的所有状态值都为“TRUE”,则例程“写入”返回值“OK”。否则,在线7上,例程“写入”返回值“NOK”。注意,在例程“恢复”2106和例程“写入”这两种状态下,局部处理例程使分布式存储寄存器值val的局部副本和时标值val-ts的局部副本这二者都更新,下面对此进行讨论。
接着,讨论处理程序例程。开始,应当注意该处理程序例程将接收到的值与局部变量值进行比较,然后根据比较的结果设定局部变量值。可能需要严格地使这些类型的操作串行化,并且保护这些类型的操作免受在每个进程和/或处理实体内就存储多个值的数据结构而形成的竞态条件的影响。利用基于原子测试和设定指令的临界部分或局部锁,容易地实现了局部串行化。READ处理程序例程2110接收READ消息,并且以状态值回复该READ消息,该状态值表示接收进程或实体中的时标val-ts的局部副本是否等于READ消息中接收到的时标以及READ消息中接收到的时标ts大于还是等于局部变量ord-ts的当前值。WRITE处理程序例程2112接收WRITE消息,在线2上确定局部变量状态的值,该值表示接收进程或实体中的时标val-ts的局部副本是否大于WRITE消息中接收到的时标,以及WRITE消息中接收到的时标ts大于还是等于局部变量ord-ts的当前值。如果在线3上确定该状态局部变量的值为“TRUE”,则WRITE处理程序例程在线4-5上利用WRITE消息中接收到的值和时标更新动态存储器和持久存储期这二者中局部存储的值和时标val和val-ts。最后,在线6上,将保存在局部变量状态中的值返回发送了WRITE处理程序例程2112处理的WRITE消息的进程或处理实体。
ORDER&READ处理程序例程2114在线2上计算局部变量状态的值,并且将该值返回从其接收该ORDER&READ消息的进程或处理实体。所计算出的状态值为表示该ORDER&READ消息中接收到的时标是否大于局部变量val-ts和ord-ts中存储的值的布尔值。如果计算得出的状态值为“TRUE”,则将接收到的时标ts存储到动态存储器和持久存储器这二者中的变量ord-ts中。
类似的是,ORDER处理程序例程2116在线2上计算局部变量状态的值,并且将该状态值返回从其接收ORDER消息的进程或处理实体。该状态反映出接收到的时标是否大于局部变量val-ts和ord-ts中保存的值。如果算得的状态值为“TRUE”,则将接收到的时标ts存储到动态存储器和持久存储器这二者中的变量ord-ts中。
利用上述分布式存储寄存器方法和协议,能够将连续一致地保持在分布式数据存储系统中的共享状态信息存储到一组分布式存储寄存器中,每个寄存器存储一个共享状态信息单元。一个寄存器的尺寸可以变化从而适应不同自然尺寸的各个共享状态信息单元。通过性能监测或者通过分析特定分布式系统内的状态信息单元的预期交换率,能够确定状态信息单元的粒度。较大的单元导致为分布式存储寄存器保持的协议变量和其他数据有较小开销,但是如果不同时间访问这些单元的不同部分,则会导致通信开销的增加。还应当注意,尽管以上的伪码和图示涉及单一分布式存储寄存器的实现方案,但是通过添加标识这些操作所涉及的特定分布式存储寄存器的状态信息单元参数,并且保持通过这些标识参数所索引的变量阵列,如val-ts、val和ord-ts,能够推广这些伪码例程。
概括的存储寄存器模型
FAB系统在块级别通常利用存储寄存器模型,来维持根据镜像冗余方案分布的各段上的一致性。换句话说,能够将段的每个块视为在多个砖上分布的存储寄存器,并且将涉及定额和消息传递的上述技术用于维持镜像副本上的数据一致性。然而,可以扩展存储寄存器方案以处理擦除编码冗余方案。首先,擦除编码冗余方案采用m+[(n-m)/2]砖的定额(而不是采用如以上段落中描述的以及用于镜像冗余方案的包括其上分布了块的大多数砖构成的定额),使得任意两个定额的交集包含至少m个砖。这种类型的定额称作“m-定额”。其次,取而代之,砖可以记录新的值以及与该值相关联的时标,而不是将WRITE操作的第二阶段中新接收到的值写入到内部存储器上的块。然后可以异步地处理记录,从而在已经接收并记录了所记录的条目的m-定额时提交所记录WRITE。使用记录是因为与镜像冗余方案中不同,不能恢复数据,这是由于砖崩溃造成的,除非m定额的砖已经接收并且正确执行了特定的WRITE操作。图22表示了经修改的伪码,类似于图17提供的伪码,其包括到存储寄存器模型的扩展,该模型处理表示本发明一个实施例的FAB系统内根据擦除编码冗余方案在砖上的段分布。例如,在m个砖已经不能记录最近写入的值的情况下,使该最近写入的值回滚到记录内至少m个副本中存在的或者存储在至少m个砖内的先前值。
图23图示了基于表示本发明一个实施例的FAB系统内的存储寄存器模型的数据一致性技术对时标的大依赖性。在图23中,所表示的块2302根据三重镜像冗余方案分布在三个砖2304-2306上,以及根据3+2擦除编码方案分布在5个砖2308-2312上。在三重镜像冗余方案中,块的每个副本,例如块2314与前一段落中讨论的两个时标2316-2317相关联。在擦除编码冗余方案中,每个块,例如第一块2318与至少两个时标相关。从数据块2320-2321和块条带中的其他块算得的检验和比特与两个时标相关,但诸如块2324的块还可以与记录条目相关(以下表示并且与块重叠),例如记录条目2326,每个条目与时标相关,例如时标2328。明显的是,基于存储寄存器模型的数据一致性技术可能包括非常大量时标的存储和维护,并且专用于时标的总体存储空间可以是FAB系统内总可用存储空间的绝大部分。此外,消息通信开销可能是由于涉及存储寄存器的上述READ和WRITE操作过程中在砖之间传递时标造成的。
由于涉及时标的巨大潜在开销,FAB系统可以采用多种技术来改善涉及时标的存储和信息开销。首先,可以由非易失随机存取存储器中的砖分级存储时标,从而可以使单一时标与单一WRITE操作中写入的大量连续砖相关。图24图示了表示本发明一个实施例的分级时标管理。在图24中,时标与称作“间隔树”类型的大的无环图中的叶节点相关联,图24中仅表示了该树的一小部分。在该图显示的部分中,两个叶节点2402和2404分别表示与砖1000-1050和1051-2000相关联的时标。在随后的WRITE操作中,如果将WRITE引向砖1051-1099,则原始无环图中的叶节点2404就被划分成经修改的无环图中的两个较低级别的块2406和2408。独立的时标可以与每个新的叶节点块相关联。反过来,如果随后在单一WRITE操作中写入块1051-2000,则随后能够接合两个块2406和2408,从而使无环图返回到原始无环图2400。使时标与单一WRITE操作中写入的块组相关联能够显著降低砖所维持的时标数量。
另一种降低砖所维持的时标数量的方式是主动垃圾收集时标。如前一段中所述,时标可以与块相关联,从而有助于存储寄存器模型的基于定额的一致性方法。然而,当其上分布了块的所有砖已经成功被更新时,不再需要与这些块相关联的时标,原因在于这些块处于完全一致并且完全冗余存储的状态。因此,FAB系统可以进一步扩展存储寄存器模型,从而在完全完成了WRITE操作之后包括时标的主动垃圾收集。FAB系统采用的用于降低时标相关的开销的其他方法可以包括在其他消息内捎带时标相关信息和在组合处理任务中一起处理相关时标,该任务包括分级降级,以下将对此进行描述。
可以进一步扩展基于定额的存储寄存器模型,以处理前一段落中所述的重新配置和迁移,其中改变了布局和冗余方案。如该段落中所述,在重新配置操作过程中,在去除和垃圾收集先前配置之前,可以同时保持两个或多个不同配置,同时使新的配置与先前现有的配置同步。在同步程序过程中,将WRITE操作引导到这两种配置。因此,较高级别定额的配置需要在cfg组或者SCN级别控制逻辑将接收到的WRITE操作视为已经成功完成之前成功完成WRITE操作。图25-26提供了用于进一步扩展存储寄存器模型的伪码,其包括基于定额写入由于在表示本发明一个实施例的FAB系统内分布式段的重新配置而可能存在的多个有效配置的概念。
不利的是,迁移是又一级别的重新配置,其可能需要更进一步扩展到存储寄存器模型。与先前讨论的重新配置情况类似,迁移涉及多个有效配置,在新配置与旧配置同步过程中,SCN级别控制逻辑将WRITE操作引导到该多个有效配置。然而,与重新配置级别不同,迁移级别需要引导到有效配置的WRITE在所有配置上成功完成,而不是定额的有效配置上完成,原因在于冗余方案对于有效配置是不同的,并且在一种冗余方案上失败的WRITE可能不可以利用不同冗余方案从不同有效配置恢复。因此,在迁移级别,有效配置的定额由所有有效配置构成。因此存储寄存器模型扩展到迁移级别产生了更一般的类存储寄存器模型。图27示出了在表示本发明一个实施例的FAB系统内用于存储寄存器模型扩展到迁移级别的高级别伪码。然而,不同的考虑因素也可以在复制级别应用,其中将WRITE引导到虚拟盘的多个副本。然而,以上参照图27讨论的最一般的存储寄存器模型扩展在VDI级别的考虑因素被包含在该一般存储寄存器模型中时,对于在VDI和虚拟盘级别的应用而言足够通用。
由于上述存储寄存器模型扩展和考虑,获得了对FAB系统内的分级控制逻辑和分级数据存储的最终高级别说明。图28图示了在表示本发明一个实施例的FAB系统内控制处理和数据存储这二者的总体分级结构。称作“顶级协调器”的顶级协调器逻辑2802可以与分级数据存储模型的虚拟盘级别2804相关联。称作“VDI级别协调器”的VDI级别控制逻辑2806可以与数据存储模型的VDI级别2808相关联。称作“SCN协调器”的SCN级别控制逻辑可以与数据存储模型的SCN级别2812相关。称作“配置组协调器”的配置组级别控制逻辑2814可以与数据存储模型的配置组级别2816相关联。最后,称作“配置协调器”的配置级别控制逻辑2818可以与数据存储模型2820的配置级别相关联。注意,在图28以及采用图28相同图解惯例的随后附图中,在一个数据存储模型节点中将cfg和布局数据结构元素组合在一起。协调器分级组织中的每个协调器实施适于协调器分级级别的扩展存储寄存器模型一致性方法。例如,cfg组协调器采用用于镜像冗余方案的基于定额的技术,以及用于擦除编码冗余方案的基于m定额的技术。相反,SCN协调器采用扩展存储寄存器模型,其需要由全部引用的配置组完成WRITE操作,以便认为该WRITE操作已经成功。
时标问题
尽管在前面章节已讨论过的数据存储模型中的分级控制处理提供了一种逻辑合理并可扩展的模型,以支持目前预想的数据存储模型和操作,以及可能添加到未来的FAB系统结构中的附加数据处理模型和操作,但在时标方面的明显问题仍然存在。时标问题最好参考具体的例子进行讨论。图29A-C图示了为对特定段的分配而将4+2擦除编码冗余方案迁移到8+2擦除编码冗余方案的情况下出现的时标问题。图29A图示了用于段的先前4+2冗余方案和新的8+2擦除编码冗余方案的布局。在图29A中,段2902表示为八个块2904-2911的邻接序列。4+2冗余方案布局2912将两个条带中的8个块分布在砖2、3、6、9、10和11上。8+2冗余方案布局2914将单一条带中的8个块分布在砖1、4、6、8、9、15、16、17、18和20上。由于这两种布局都使用了砖6和9,因此砖6和9包含了新旧配置的块。在4+2配置中,将校验和块分布2916在砖10和11上,在8+2配置中,将校验和块分布2918在砖18和20上。图29A中,以双箭头、例如双箭头2920表示砖内的段2904-2911和条带的块之间的映射。
考虑段的最终块2911的WRITE,在图29A中以箭头2922表示。在擦除编码冗余方案布局中,其中写入块的条带中的所有块与用于WRITE操作的新时标相关联,这是因为对任何块的写入都影响条带中所有块的奇偶校验位。所以,如图29B所示,写入段2911的最后块使得4+2布局的第二条带2924-2927中的所有块与对应于该WRITE操作的新时标相关联。可是,在8+2布局中,单一条带内的所有块与新时标2928-2935相关。在图29B中,与新时标相关联的块被涂黑。接下来,考虑如图29C所示的段2904的第一块的READ。当从4+2布局2912中读取时,第一块与旧时标相关,如块2936中缺少阴影所示。可是,当从8+2布局2914中读取时,第一块与新时标2938相关,如第一块中的阴影所示。因此,接收所读取的块及时标的控制逻辑可以推断出相对于该段的第一块存在时标不匹配,因此得出块的副本是不一致的。例如,SCN协调器可能使READ失败也可能采取恢复步骤,这是因为两个不同cgrp报告给SCN协调器的时标不一致性管理该段的两个不相同的同时存在的冗余方案。事实上,并没有数据的不一致,并且时标的不一致仅是由于在低于SCN协调器的配置协调器级别管理的两个不同冗余方案的不同时标分配行为所引起的。图29A-C中所示的时标问题只是在图28中所示的分级协调器和数据存储模式中发生的许多不同的与时标有关问题中的一个例子。
针对时标问题分级时标解决方法
尽管可以提出许多不同技术方案来解决在前述章节中所针对的时标问题,但提出的很多解决方案会引起更多的开销和低效率,并且需要对存储寄存器模型进行特别的无可扩展性的修改。本发明的一个实施例是一种相对直接且可扩展的方法,该方法采用一种新类型时标并且当分级处理级别完成时标相关操作时通过时标范围的分段限制对不同分级处理级别进行相互隔离。实际上,本发明的这个实施例涉及一种新类型型时标,其直接映射到图28所示的分级处理和数据存储模型中。
图30图示了表示本发明一个实施例的一种新类型时标之一。时标3000是数据结构,一般存储在砖内的非易失性随机存取存储器中,与数据结构、数据结构节点、数据实体相关联,并且在砖与进程之间以消息相通信。图30示出的新类型时标3000的例子,可以包括描述或引用与时标相关联的实体的字段3002,如数据块或记录条目,还包括字段3004,其包含了实时的时间值、逻辑时间值或时标与第一字段3002中所述或所引用的实体相关联的序列值,还包括级别字段3006,其表示了图28所示的处理和数据存储分级内的最高级别,在该级别认为时标是有效的,可选的是,包括用于不同目的(包括快速垃圾收集和其他目的等)的附加字段3008。
级别字段的语义和新类型时标的用途最好参照具体的例子进行阐述。图31A-F图示了使用表示本发明一个实施例的新类型时标来有助于在多种冗余方案下向分布在多个砖上的FAB段进行WRITE操作过程中数据的一致性。图31A-F全采用了和图28相同的图解惯例,其在上述参考图28已经阐述。考虑引导到FAB系统内特定虚拟盘3104的WRITE操作3102。顶层协调器将WRITE请求引向虚拟盘的两个VDI副本3106-3107,VDI协调器又将WRITE请求引向对应于WRITE请求所引导到的段的两个不同的SCN节点3108-3109。相对于第一SCN节点正在发生迁移,因此SCN协调器将WRITE请求引导到两个不同的cfg组3110和3112,第一cfg组代表三重镜像冗余,第二cfg组代表RAID-6擦除编码冗余方案。两个cfg组3110和3112又分别将WRITE请求引向相应配置3114和3116。第二SCN节点3109将WRITE请求引导到单一配置组3118,该配置组又将该WRITE请求引导到相关联的配置3120。假设相对于与第一SCN节点3108的三重镜像cfg组3110相关的配置3114中的砖“c”WRITE失败。对相关配置组内的砖的所有其他WRITE操作成功。因此,如图31B所示,受到相关配置3114、3116和3120内所有数据块上的WRITE请求影响的所有块与新时标相关,而砖“c”中的块与旧时标相关。该新时标具有表示该分级结构的顶层的级别字段值,在图31B中也示出了。这意味着相对于控制处理和数据存储模型中的所有分级级别。该时标是有效的。
接着,如图31C所示,在该分级模型中,各分级级别相对于WRITE操作向上回复。例如,在配置协调器级别,配置3114将对砖“c”WRITE失败的表示返回到配置组节点3110,以及将对砖“a”和“b”WRITE成功的指示返回到该配置组节点。配置3116返回对在该配置中的所有5个砖的WRITE操作都成功的指示。类似的是,配置3120返回对配置3120中全部5个砖的所有WRITE操作成功的指示。沿着处理分级一级接一级地将成功指示向上返回到顶层协调器。注意,配置组节点3110返回成功的指示,无论对砖“c”的WRITE是否失败,这是因为在三重镜像冗余方案下,对砖“a”和“b”的成功WRITE构成了对砖定额的成功WRITE。
在返回成功的指示后,分级协调器级别从顶层协调器向下,将与WRITE操作相关联的时标的级别字段降级为对应于其以下的级别字段值。换句话说,顶层协调器降低与受WRITE操作影响的砖相关的时标的级别字段以表示VDI协调器级别,VDI协调器级别降低时标级别字段的值,以表示SCN协调器级别,依此类推。因此,与WRITE操作相关联的所有时标的级别字段降低,以表示配置协调器级别,如图31D所示。因为对砖“c”的WRITE失败,所以在配置协调器级别保持该时标在有效状态。将时标保持有效状态,直到解决了失败的WRITE为止,并且获得了WRITE操作的完全成功。然而,配置协调器级别以上的所有协调器级别将时标视为已经经过垃圾收集。
如图31E所示,配置组协调器通过重新配置包含失败的砖的配置3114而解决了失败的WRITE。因此,配置组3110引用了旧配置3114和新配置3124,在新配置3124中,新的砖“p”替代了旧配置中的失败的砖“c”。作为重新配置的一部分,将块从旧配置3114复制到新配置3124。在图31A-F所示的实例中,在新配置中,复制的块接收具有新时标值的新时标。在某些情况下,再同步例程可以重构数据并且保存现有时标,而在其他情况下,例如当前实例中,生成新时标。因此,在先前描述的WRITE操作中写入的块与旧配置中的一个时标值和新配置中的较新时标值相关联。因此,相对于新配置中的块和剩余配置中的所有其他块存在时标的不一致。
然而,因为时标的分级性质以及因为旧配置3114中的时标已经降低到配置协调器级别,并且最初将新配置3124中的新时标设定为配置协调器级别(这是因为这些时标是由配置协调器生成的),所以在配置协调器级别以上的控制处理分级内时标的不一致是不可见的。因此,配置组协调器或者配置组协调器以上的任意协调器都不能现察到时标不一致。将具有当前控制处理分级以下级别的时标视为由该处理级别进行垃圾收集。因此,从配置组协调器和所有更高级别别的协调器的观点出发,与块相关联的时标已经经过垃圾收集,这是因为从配置组协调器和所有更顶层协调器的观点出发,WRITE操作已经成功。如图31F所示,一旦完成了配置组节点3110的重新配置,删除并且垃圾收集旧配置(图31E的3114),从而仅剩下单一的新配置3124。这时,已经解决了对砖“c”的WRITE失败,因此配置协调器降低在与受到WRITE操作影响的块相关联的所有时标的级别字段中的级别表示。在配置协调器级别的降低意味着:时标在任意处理级别不再有效,并且能够利用垃圾收集机制进行物理垃圾收集。
总而言之,表示本发明一个实施例的新的分级时标可以包括表示处理分级内的最高级别的级别字段,在该级别时标视为有效的。该级别以上的协调器将时标视为已经经过垃圾收集,因此相对于时标不一致相关的错误检测而言,该级别以上的协调器不考虑该时标。因此,不表示数据不一致的时标不一致(例如参照图29A-C描述的时标不一致),针对那些充分认识到时标不一致不表示数据不一致的处理级别而自动加以隔离,使得较高级别的控制逻辑不会不经意地推断故障,以及在没有数据不一致或者其他错误存在的情况下调用恢复操作。通过在分级时标内包含处理级别字段,能够防止涉及与时标相关联的数据或其他计算实体的处理任务所处的处理级别与完成处理时所处的处理级别之间不希望的依赖性。分级时标还有助于贯穿分级处理阶段的时标的分阶段垃圾收集。
可以在分级的顶处理级别异步地实施时标垃圾收集。图32图示了表示本发明一个实施例的异步时标收集进程的伪码。该伪码例程利用三个局部声明的变量level、i和ts,在线3-5上声明。时标垃圾收集例程传递了一种时标类timestamps的实例。时标垃圾收集例程连续执行线6-20的do-while回路,以便在分级处理级别完成时标相关的操作和任务时降低并最终垃圾收集时标。在线7-18的for-回路中,时标垃圾收集例程从顶级别向下考虑每个处理级别。在线9-17的for-回路中,时标垃圾收集例程考虑处于当前考虑的级别的每个未完成的时标。如果已经完成了与该时标相关联的WRITE操作,如线13上检测到的,则如果当前级别为配置级别或者最低控制处理级别,那么在线15上为重新分配而标记该时标。否则,将该时标降低到线16上的下一最低级别。在考虑与所有级别相关联的所有时标之后,在线20上调用垃圾收集程序,以去除为重新分配而标记的所有时标。
分级时标除了用于FAB系统之外,还可以用于多种不同分级结构的处理系统。分级处理系统可以包括网络通信系统、数据库管理系统、操作系统、各种实时系统,包括复杂进程的控制系统以及其他分级处理系统。图33A-F概括了表示本发明实施例的用于在分级组织的处理系统内分阶段限制时标范围的一般方法。如图33A所示,将与时标3304相关联的初始请求3302输入到最高级别处理节点3306。时标3304可以与在较高级别别接口处的请求相关联,或者可以通过处理节点3306与该请求相关联。然后,处理节点3306通过处理分级向下转发该请求。首先将该请求转发到第二级别处理节点3308,该第二级处理节点3308又把该请求转发到两个第三级别处理节点3310和3312,然后它们又将该请求转发到第四级别的处理节点3314和3316。该请求可以被转发和/或者复制和转发到在后续级别的处理节点。
将与所转发的请求相关联的时标的级别字段,例如由处理节点3306转发到处理节点3308的请求3320中的级别字段3318,全都设为0,用数字表示了处理分级内的处理的最高级别。接着,如图33B所示,将对该请求的响应朝向该处理分级上方返回到顶级别处理节点3306。该请求的副本保持与接收它们的每个处理节点相关联。与该处理请求相关联的时标中的级别字段仍然具有0值,表示该时标在整个处理分级上是有效的。接着,如图33C所示,已经接收到来自下一最低级别处理节点3308的成功回复的顶级别处理节点3306确定已经成功执行了该请求,并且降低与该请求相关联的所有时标的级别字段中的级别值。因此,在图33C中,就从头至尾或可见地从头至尾都被保持的所有时标的所有级别字段而言,该处理分级已经被降低到值“1”。从顶级别处理节点观察,这些时标目前已经垃圾收集了,这些时标不再是有效的。因此,相对于已完成的操作,顶级别处理节点随后不能检测到时标不一致。
如图33D所示,已经接收到来自较低级别处理节点的成功响应的第二级别处理节点3308确定该请求已经成功地被完成,并且将在该处理分级从头至尾都被保持的与该请求相关联的所有时标的级别字段降低为值“2”。这时,顶级别处理节点3306或者第二级处理节点3308相对于已完成的操作随后都不能检测到时标不一致。如图33E和33F所示,当每个随后的下一最低级别处理节点或者多个节点推断出已经成功完成了该请求时,随后降低与该请求相关联的所有时标的级别字段中的级别值,相继地使时标的范围变窄至处理分级的越来越小的部分。最后,由于最终的降低,物理上垃圾收集这些时标。
尽管已经就特定实施例描述了本发明,但无意将本发明限制为这些实施例。在本发明精神内的修改对于本领域技术人员而言是显而易见的。例如,分级时标至少包含级别字段和时标或序列值,并且可以包含用于特定用途的任意数量的附加字段。在所述实施例中,尽管将时标范围相继限制为处理分级的较低级别,但可以通过根据许多其他模式改变分级时标级别字段的值来改变时标范围。例如,在可选实施例中,可以将分级时标的范围相继限制到处理分级的更高级别。还可以在按照分级方式实施操作的非分级网络和图中采用分级时标。能够在多种不同计算系统和网络中采用分级时标,并且能够按照基本上上数量不受限的不同形式编码采用分级时标的方法,包括利用不同数据结构、不同控制结构和不同模块化组织以不同编程语言开发的并且处于固件和硬件逻辑电路中的不同程序和例程。可以在各种不同存储媒质中生成并存储分级时标,所述存储媒质包括电子存储器、大容量设备,并且可以通过许多不同的通信媒质发送该分级时标。
前文为了解释而进行的说明使用特定术语提供了对本发明的彻底理解。然而,非常清楚的是:对于本领域技术人员而言为了实现本发明无需特定的细节。为了说明和描述,前面提出了对本发明特定实施例的说明。无意穷尽或将本发明限制为所公开的精确形式。显而易见的是考虑到以上的教导,许多修改和变形都是可能的。所示和所述的实施例是为了最好地解释本发明的原理及其实际用途,从而能够使本领域其他技术人员最好地以适合预期的特定用途的各种修改利用本发明和各个实施例。本发明的范围由以下权利要求及其等价物限定。
Claims (10)
1.一种用于防止在分级处理系统中在处理时标相关联实体的过程中不希望地检测到时标不一致性的方法,该方法包括:
采用包括处理级别表示(3006)的时标(3000),每个时标中的处理级别表示反映出该分级处理系统内该时标的当前范围;
当相对于在一个处理级别的该时标完成了时标相关联实体的处理时,改变与该实体相关联的时标中的处理级别表示。
2.根据权利要求1所述的方法,其中改变与该实体相关联的时标中的处理级别表示(3006)还包括以下步骤之一:
将处理级别表示设定为较低的值;
将处理级别表示设定为较高的值。
3.根据权利要求1所述的方法,还包括:
在给定处理级别,当检查涉及能够根据与该实体相关联的时标识别出的实体的问题时,仅考虑处理范围内的时标,其由时标(3000)内的处理级别表示(3006)所表示并且包括该给定处理级别。
4.根据权利要求1所述的方法,其中所述方法被使用在时标与数据块相关联的分布式存储系统(102-109)中。
5.根据权利要求4所述的方法,
其中该分布式存储系统包括互连存储系统组件;
其中该分布式存储系统根据一种或多种冗余方案将数据分布在存储系统组件上;
其中每个分布式存储系统内的分级处理级别(2802、2806、2810、2814、2818)相对于逻辑数据实体的分级级别协调数据存取操作的执行。
6.一种分布式存储系统(102-109),包括:
通过一种或多种通信媒质互连的多个存储系统组件;
由该多个存储系统组件中的每一个执行的分级处理逻辑单元(2802、2806、2810、2814、2818),较高级别的分级处理逻辑单元协调数据存取操作的分布执行,较低级别的分级处理逻辑单元实施存储系统组件内的存取;
与存储在存储系统组件内的数据单元相关联的分级时标(3000),每个分级时标包括表示分级处理级别内的分级时标范围的处理级别表示(3006)。
7.根据权利要求6所述的分布式存储系统,其中当在一个给定处理级别(3006)完成了涉及相关联时标的时标相关联数据单元的处理时,分级处理逻辑单元改变时标中的处理级别表示。
8.根据权利要求7所述的分布式存储系统,其中当分级处理逻辑单元的处理级别检查能够根据与数据单元相关联的时标识别的涉及数据单元的问题时,该分级处理逻辑单元仅检查由处理范围内的时标识别的问题,其由时标内处理级别表示(3006)所表示并且包括所述处理级别。
9.根据权利要求7所述的分布式存储系统,
其中该分级处理逻辑单元根据一种或多种冗余方案将数据分布在存储系统组件上;
其中每个分布式存储系统内的分级处理逻辑单元的分级处理级别(2802、2806、2810、2814、2818)相对于逻辑数据实体的分级级别协调数据存取操作的执行。
10.根据权利要求7所述的分布式存储系统,
其中时标(3000)与存储在该分布式存储系统的存储系统组件的内部存储组件中的数据块相关联;
其中每个分布式存储系统内的分级处理逻辑单元(2802、2806、2810、2814、2818)的分级处理级别将存储在不同存储系统组件内的数据块的冗余副本的时标进行比较,以便检测数据的不一致性。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/369,681 US7644308B2 (en) | 2006-03-06 | 2006-03-06 | Hierarchical timestamps |
US11/369681 | 2006-03-06 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101034339A CN101034339A (zh) | 2007-09-12 |
CN101034339B true CN101034339B (zh) | 2010-11-03 |
Family
ID=38336259
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007100857185A Expired - Fee Related CN101034339B (zh) | 2006-03-06 | 2007-03-06 | 分级时标 |
Country Status (4)
Country | Link |
---|---|
US (1) | US7644308B2 (zh) |
JP (1) | JP2007242016A (zh) |
CN (1) | CN101034339B (zh) |
DE (1) | DE102007010250A1 (zh) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8290899B2 (en) * | 2007-03-28 | 2012-10-16 | Netapp, Inc. | Group stamping style asynchronous replication utilizing a loosely-accurate global clock |
JP4804408B2 (ja) * | 2007-04-17 | 2011-11-02 | 株式会社日立製作所 | ログ解析方法及び装置 |
JP5064134B2 (ja) * | 2007-08-03 | 2012-10-31 | 株式会社日立製作所 | メモリ管理方法およびその方法を用いるコンピュータ |
US8949614B1 (en) * | 2008-04-18 | 2015-02-03 | Netapp, Inc. | Highly efficient guarantee of data consistency |
US8321380B1 (en) | 2009-04-30 | 2012-11-27 | Netapp, Inc. | Unordered idempotent replication operations |
US8655848B1 (en) | 2009-04-30 | 2014-02-18 | Netapp, Inc. | Unordered idempotent logical replication operations |
US8671072B1 (en) | 2009-09-14 | 2014-03-11 | Netapp, Inc. | System and method for hijacking inodes based on replication operations received in an arbitrary order |
US8473690B1 (en) | 2009-10-30 | 2013-06-25 | Netapp, Inc. | Using logical block addresses with generation numbers as data fingerprints to provide cache coherency |
US8799367B1 (en) | 2009-10-30 | 2014-08-05 | Netapp, Inc. | Using logical block addresses with generation numbers as data fingerprints for network deduplication |
US8495107B2 (en) * | 2011-06-23 | 2013-07-23 | Oracle International Corporation | System and method for use with garbage collected languages for enabling the allocated heap memory to be updated at runtime |
EP2863566B1 (en) | 2013-10-18 | 2020-09-02 | Université de Nantes | Method and apparatus for reconstructing a data block |
US10505818B1 (en) | 2015-05-05 | 2019-12-10 | F5 Networks. Inc. | Methods for analyzing and load balancing based on server health and devices thereof |
EP3226184A1 (en) * | 2016-03-30 | 2017-10-04 | Tata Consultancy Services Limited | Systems and methods for determining and rectifying events in processes |
US10469394B1 (en) | 2016-08-01 | 2019-11-05 | F5 Networks, Inc. | Methods for configuring adaptive rate limit based on server data and devices thereof |
US11334276B2 (en) * | 2020-04-07 | 2022-05-17 | Vmware Inc. | Using segment pre-allocation to support large segments |
US11334277B2 (en) * | 2020-04-07 | 2022-05-17 | Vmware Inc. | Issuing efficient writes to erasure coded objects in a distributed storage system with two tiers of storage |
US11625370B2 (en) | 2020-04-07 | 2023-04-11 | Vmware, Inc. | Techniques for reducing data log recovery time and metadata write amplification |
US11467746B2 (en) | 2020-04-07 | 2022-10-11 | Vmware, Inc. | Issuing efficient writes to erasure coded objects in a distributed storage system via adaptive logging |
US11474719B1 (en) | 2021-05-13 | 2022-10-18 | Vmware, Inc. | Combining the metadata and data address spaces of a distributed storage object via a composite object configuration tree |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6065018A (en) * | 1998-03-04 | 2000-05-16 | International Business Machines Corporation | Synchronizing recovery log having time stamp to a remote site for disaster recovery of a primary database having related hierarchial and relational databases |
CN1606839A (zh) * | 2001-12-21 | 2005-04-13 | 诺基亚公司 | 利于无线网状网络中同步的装置及相关方法 |
Family Cites Families (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4714992A (en) * | 1985-11-26 | 1987-12-22 | International Business Machines Corporation | Communication for version management in a distributed information service |
JPH03130842A (ja) * | 1989-10-17 | 1991-06-04 | Toshiba Corp | データベースシステムの同時実行制御装置 |
US5175856A (en) * | 1990-06-11 | 1992-12-29 | Supercomputer Systems Limited Partnership | Computer with integrated hierarchical representation (ihr) of program wherein ihr file is available for debugging and optimizing during target execution |
US5684807A (en) * | 1991-04-02 | 1997-11-04 | Carnegie Mellon University | Adaptive distributed system and method for fault tolerance |
US5701480A (en) * | 1991-10-17 | 1997-12-23 | Digital Equipment Corporation | Distributed multi-version commitment ordering protocols for guaranteeing serializability during transaction processing |
ATE160637T1 (de) * | 1991-12-18 | 1997-12-15 | Siemens Ag | Verfahren zur uhrzeitführung in computernetzen |
US5471631A (en) * | 1992-10-19 | 1995-11-28 | International Business Machines Corporation | Using time stamps to correlate data processing event times in connected data processing units |
WO1994025913A2 (en) * | 1993-04-30 | 1994-11-10 | Novadigm, Inc. | Method and apparatus for enterprise desktop management |
US5832487A (en) * | 1994-12-15 | 1998-11-03 | Novell, Inc. | Replicated object identification in a partitioned hierarchy |
US5924094A (en) * | 1996-11-01 | 1999-07-13 | Current Network Technologies Corporation | Independent distributed database system |
US6125368A (en) * | 1997-02-28 | 2000-09-26 | Oracle Corporation | Fault-tolerant timestamp generation for multi-node parallel databases |
EP0982970B1 (en) * | 1998-08-21 | 2006-10-04 | Nippon Telegraph and Telephone Corporation | ATM switch |
US6301643B1 (en) * | 1998-09-03 | 2001-10-09 | International Business Machines Corporation | Multi-environment data consistency |
US6516327B1 (en) * | 1998-12-24 | 2003-02-04 | International Business Machines Corporation | System and method for synchronizing data in multiple databases |
US6393419B1 (en) * | 1999-02-08 | 2002-05-21 | Telefonaktiebolaget Lm Ericsson (Publ) | Multipoint database synchronization protocol to avoid data corruption |
US6748555B1 (en) * | 1999-09-09 | 2004-06-08 | Microsoft Corporation | Object-based software management |
US7206805B1 (en) * | 1999-09-09 | 2007-04-17 | Oracle International Corporation | Asynchronous transcription object management system |
US6574749B1 (en) * | 1999-10-29 | 2003-06-03 | Nortel Networks Limited | Reliable distributed shared memory |
US6983321B2 (en) * | 2000-07-10 | 2006-01-03 | Bmc Software, Inc. | System and method of enterprise systems and business impact management |
US6883170B1 (en) * | 2000-08-30 | 2005-04-19 | Aspect Communication Corporation | Method and system to maintain a hierarchy of instantiated application objects and to enable recovery from an applications failure |
US7272720B2 (en) * | 2000-09-27 | 2007-09-18 | Fujitsu Limited | Date-and-time management device and signature generation apparatus with date-and-time management function |
US6721856B1 (en) * | 2000-10-26 | 2004-04-13 | International Business Machines Corporation | Enhanced cache management mechanism via an intelligent system bus monitor |
EP1239369A1 (de) * | 2001-03-07 | 2002-09-11 | Siemens Aktiengesellschaft | Fehlertolerante Rechneranordnung und Verfahren zum Betrieb einer derartigen Anordnung |
US7293028B2 (en) * | 2001-06-08 | 2007-11-06 | Sap Ag | Cache-conscious concurrency control scheme for database systems |
US6754657B2 (en) * | 2001-08-24 | 2004-06-22 | Microsoft Corporation | Time stamping of database records |
AU2003213406A1 (en) * | 2002-03-22 | 2003-10-08 | Toyota Jidosha Kabushiki Kaisha | Task management device and method, operation judgment device and method, and program to be judged |
US7926066B2 (en) * | 2002-07-09 | 2011-04-12 | Openpages, Inc. | Adaptive content platform and application integration with the platform |
US6842825B2 (en) * | 2002-08-07 | 2005-01-11 | International Business Machines Corporation | Adjusting timestamps to preserve update timing information for cached data objects |
GB2392588A (en) * | 2002-08-24 | 2004-03-03 | Zarlink Semiconductor Ltd | Adaptive TDM clock recovery using timestamps |
US7372857B1 (en) * | 2003-05-28 | 2008-05-13 | Cisco Technology, Inc. | Methods and apparatus for scheduling tasks |
US20050022213A1 (en) * | 2003-07-25 | 2005-01-27 | Hitachi, Ltd. | Method and apparatus for synchronizing applications for data recovery using storage based journaling |
JP3791921B2 (ja) * | 2003-07-04 | 2006-06-28 | インターナショナル・ビジネス・マシーンズ・コーポレーション | ネットワーク・トレースを解析する方法、ネットワーク・トレースを解析するための処理装置、および該処理装置としてコンピュータを制御させるためのコンピュータ実行可能なプログラム、並びにネットワークにおけるノード間の時間差補正方法 |
US7139784B2 (en) | 2003-07-29 | 2006-11-21 | Hewlett-Packard Development Company, L.P. | Dead timestamp identification and elimination |
US7366725B2 (en) * | 2003-08-11 | 2008-04-29 | Descisys Limited | Method and apparatus for data validation in multidimensional database |
US7251748B2 (en) * | 2003-09-12 | 2007-07-31 | Sun Microsystems, Inc. | System and method for determining a global ordering of events using timestamps |
US7281023B2 (en) * | 2003-12-15 | 2007-10-09 | At&T Knowledge Ventures, L.P. | Architecture of database application with robust online recoverability |
US7707588B2 (en) * | 2004-03-02 | 2010-04-27 | Avicode, Inc. | Software application action monitoring |
US7088229B2 (en) * | 2004-06-14 | 2006-08-08 | Oracle International Corporation | Methods and systems for verifying the position and status of hierarchically arranged objects |
US7424499B2 (en) * | 2005-01-21 | 2008-09-09 | Microsoft Corporation | Lazy timestamping in transaction time database |
-
2006
- 2006-03-06 US US11/369,681 patent/US7644308B2/en not_active Expired - Fee Related
-
2007
- 2007-03-02 DE DE102007010250A patent/DE102007010250A1/de not_active Withdrawn
- 2007-03-05 JP JP2007053628A patent/JP2007242016A/ja active Pending
- 2007-03-06 CN CN2007100857185A patent/CN101034339B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6065018A (en) * | 1998-03-04 | 2000-05-16 | International Business Machines Corporation | Synchronizing recovery log having time stamp to a remote site for disaster recovery of a primary database having related hierarchial and relational databases |
CN1606839A (zh) * | 2001-12-21 | 2005-04-13 | 诺基亚公司 | 利于无线网状网络中同步的装置及相关方法 |
Also Published As
Publication number | Publication date |
---|---|
US7644308B2 (en) | 2010-01-05 |
US20070208839A1 (en) | 2007-09-06 |
CN101034339A (zh) | 2007-09-12 |
DE102007010250A1 (de) | 2007-09-13 |
JP2007242016A (ja) | 2007-09-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101034339B (zh) | 分级时标 | |
JP4541373B2 (ja) | 分散データの階層的管理のための方法及びシステム | |
JP4516087B2 (ja) | 一貫性方法及び一貫性システム | |
US7743276B2 (en) | Sufficient free space for redundancy recovery within a distributed data-storage system | |
US20070208790A1 (en) | Distributed data-storage system | |
CN105339907B (zh) | 非易失性存储器系统中的同步镜像 | |
US9733862B1 (en) | Systems and methods for reverse point-in-time copy management in a storage system | |
CN105659213B (zh) | 无共享分布式存储系统中的目标驱动独立数据完整性和冗余恢复 | |
CN109716279B (zh) | 用于写入持久性的自适应并发 | |
KR101921365B1 (ko) | 비휘발성 매체 더티 영역 추적 기법 | |
CN105637490B (zh) | 用于在闪速存储器装置之间迁移数据的方法和系统 | |
JP2007242017A (ja) | データ状態記述データ構造体 | |
US8433685B2 (en) | Method and system for parity-page distribution among nodes of a multi-node data-storage system | |
US20110238936A1 (en) | Method and system for efficient snapshotting of data-objects | |
Thomasian et al. | Higher reliability redundant disk arrays: Organization, operation, and coding | |
Venkatesan et al. | A general reliability model for data storage systems | |
Thomasian et al. | Hierarchical RAID: Design, performance, reliability, and recovery | |
US20210255925A1 (en) | Multi-level erasure system with cooperative optimization | |
Arslan | Durability and availability of erasure-coded storage systems with concurrent maintenance | |
Long et al. | The reliability of regeneration-based replica control protocols | |
US10922012B1 (en) | Fair data scrubbing in a data storage system | |
Thomasian | RAID Organizations for Improved Reliability and Performance: A Not Entirely Unbiased Tutorial (1st revision) | |
Duan | Addressing Fault Tolerance for Staging Based Scientific Workflows | |
Arpaci-Dusseau | Modeling Impacts of Resilience Architectures for Extreme-Scale Storage Systems | |
Arslan et al. | TALICS3: Tape library cloud storage system simulator |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20101103 Termination date: 20130306 |