用于支持数据事务的设备和方法

文档序号:6562331阅读:189来源:国知局

专利名称::用于支持数据事务的设备和方法
技术领域
:本发明一般涉及数据事务,具体是数据写入易失性存储器的分布式事务支持。
背景技术
:事务是指视为保证数据完整性的可分性单元的一系列信息交换和相关工作(例如数据库更新)。在一个事务中,将数据从一个一致状态转换到另一个一致状态。为了完成一个事务以及使得数据变化成为永久的(或“被提交”),关于事务失败方面,必须保证一个事务是原子的,即该事务必须被完整地完成。如果在该事务被成功完成之前出现了一些情况,到该事务被终止,且必须撤消对数据所做的改变,以便产生这样一个结果,即该事务从来就没有存在过。下文中,当将术语“完成”应用于一个事务时,是指该事务或者被提交或者被终止。当事务中的参加者是一个分布式系统的一部分时,事务支持的固有困难就被加剧。从而有必要保证事务被所有参加者原子地且一致地提交或终止。例如,一个事务中的某些参加者可能失败,且在一个分布式系统中,可能其它参加者中的某个不知道该失败。同样,从失败中恢复的参加者必须确定该事务的命运。在此引入作为参考的,Bernstein等人(Addison-Wesley,1987)的“数据库系统中的并行控制和恢复”的第7章中,描述了用来保证在分布式系统的多个结点上的事务一致性原子提交协议(ACP)。作者描述了作为ACP例子的一个两段提交(2PC)协议。2PC协议包括第一阶段,其中对一个事务的所有参加者轮询该事务是否应被提交或终止。在2PC协议的第二阶段,该事务的一个协调者基于轮询来确定该事务是否被提交或终止,并将该确定发送给参加者。本领域已知在一个计算机系统故障事件中,有效存储数据和从被存储的数据中恢复的方法。这些方法依赖于将数据之外的信息存储到一个非易失性存储器,典型地是一个磁盘,并在出现故障时,使用该额外的信息恢复被存储的数据。在此将其公开内容引入作为参考的English等人的美国专利5,345,575描述了包括一个存储器的磁盘控制器。该存储器含有将存储在磁盘中的数据块的逻辑地址映射到标识了物理存储单元的一张表格。除了将数据写入到一个存储单元中之外,磁盘控制器还写入每个存储单元的相关的逻辑地址、时间标记以及指示了一个特定数据块出现在一系列数据块的何处的数据。通过实质上从整个磁盘中读取,这些额外的信息被用来从系统故障中恢复。在此将其公开内容引入作为参考的Chao等人的美国专利5,481,694描述了包含一个存储器、多个磁盘机以及一个控制器的电子数据存储器系统。该存储器包括交叉引用了逻辑地址和磁盘机上的物理地址的表格、含有陈旧数据的物理地址列表以及能够接收数据的磁盘机上的段的物理地址列表。当把数据写入磁盘机时,包括对于多块的逻辑地址和序列号的标记被与数据写入。为了从系统故障中恢复,存储在磁盘机上的检验点记录和检验点段恢复表格和列表。将1993年12月的第14次操作系统原理会议的会议录的15-28页中,deJonge等人的题为“TheLogicalDiskANewApproachtoImprovingFileSystem(逻辑磁盘改进文件系统的一个新方法)”的文章在此引入作为参考,其中作者描述了一种逻辑磁盘,其中规定了用于将文件管理和磁盘管理分离的磁盘存储器的接口。该接口使用逻辑块号和块列表,并支持多文件系统。作者声称支持一个原子恢复单元(ARU)。在恢复过程中,属于相同ARU的所有逻辑磁盘命令被看作单一的无形操作。因此,逻辑磁盘总是恢复到以前存在的状态,或恢复到执行了ARU的所有操作之后存在的状态。不过,不支持并行ARU。将1992年1月的USENIXwinter1992技术会议会议录的第237-251页中的English等人的题为“Logeaself-organizingdiskcontroller(Loge一种自我组织的磁盘控制器)”的文章在此引入作为参考,其中作者描述了使用一张转换表和一个分配图将数据存储到磁盘中的系统。将包含一个块地址和一个时间标记的尾部标记与被存储数据一起写入磁盘。尾部标记中的信息使得系统能够从故障中恢复。将Chao等人的题为“Mimeahighperformanceparallelstoragedevicewithstrongrecoveryguarantees(Mime带有强大恢复保证的高性能并行存储器设备)”,HPL-CSP-92-9(Hewlett-packard公司于1992年11月出版)的文章在此引入作为参考,其中作者描述了类似于上面所描述的Loge的磁盘存储结构。在Mime中,尾部标记包括对于多块写的一个块地址、一个序列号以及多块写中的最后分组的标记。与Loge中一样,尾部标记信息使得系统能够从故障中恢复。Mime支持视见度组形式中的有限形式事务支持的原子多块写。Mime保证在故障的情况下,一个活动视见度组中的所有块写被终止。
发明内容本发明的某些方面的一个目的是提供用来支持数据事务的改进系统。本方面的某些方面的另一个目的是提供当事务的参加者分布在一个网络上时,用来执行并行数据事务的改进系统。在本方面的优选实施方案中,一个或多个存储设备最好是固定磁盘,被用来存储存储设备的一个或多个客户所启动的事务的数据内容。这些存储设备中的每一个由最好是一个存储服务器的控制电路来管理,该服务器将事务的数据内容写入存储设备的所选择的块帧中。这种存储设备在这里称作事务支持逻辑磁盘(TSLD)。存储服务器有易失性存储器,其中有数据结构,数据结构的值被用来记录写入到TSLD的事务数据,并动态链接数据被写入的块帧的物理和逻辑地址。为了保护一个TSLD防备一个特定存储服务器的故障,使用检验点操作将服务器的数据结构中的值以周期间隔存储到TSLD中。在检验点操作之间,数据结构中的值也被与每个TSLD的块帧中的事务的数据内容一起存储。数据结构中的值以及检验点数据最好使得块帧能够在存储服务器故障的事件中被方便地找到,以便块帧中的数据内容能够被恢复。在故障事件中,存储服务器读取被存储的检验点数据并“重放”TSLD操作的过程,包括自从执行上次检验点以来的提交和终止事务。重放过程使得存储服务器能够在故障时,恢复其状态以及任何正在进行的事务的状态。上述的临时专利申请以及转让给本申请同一受证人的,2000年7月6日提交的另一个题为“EnhancedStableDiskStorage(增强固定磁盘存储器)”的,在此将其公开内容引入作为参考的专利申请中描述了存储和恢复的替代方法。本方面的优选实施方案最好是支持如本发明背景中所描述的一个两段提交(2PC)协议。在事务的第一阶段,一个称作事务协调者的特定TSLD客户通过将参加该事务的TSLD中的一个指定为主TSLD来启动该事务。该主TSLD作为记录事务状态的记录器而工作,且客户指导该主TSLD开始该事务。客户通过参加该事务的其它TSLD的管理服务器来指导这些TSLD将该事务的恰当数据内容“软写入”各自的TSLD,从而产生未提交的块值,并通知每种情况下的客户该操作已被完成。在一个软写入操作中,块帧被写入的逻辑和物理地址被临时链接。一旦客户第一阶段已被成功完成,则在第二阶段,它就指导主TSLD提交该事务,然后客户发布提交指令给参加的每个TSLD以提交该事务,从而产生被提交的块值。通过永久链接被临时链接的地址来执行提交操作。如果在一个预定的时间段内,第一阶段未被成功完成,则客户指导主TSLD终止该事务,然后客户发布终止指令给参加的每个TSLD以终止该事务,从而该事务之前存在的地址链接被恢复。对于本领域已知的事务系统上的事务操作,上面描述的系统有多个重要优点。特别地·数据结构中的相同信息被用来使得一个TSLD能够从服务器故障中基本上完全恢复,并允许两段提交协议的有效执行。·系统支持多个TSLD上的分布式事务,还支持一个或多个TSLD上的并行数据事务。·没有事务状态的中央日志。每个事务可以选择不同的主TSLD,从而事务状态记录是分布式的。·TSLD支持并行活动事务并能够从多个事务故障中恢复。·因为数据结构中的所有信息都被存储到TSLD中,所以TSLD可以从一个故障服务器移动到一个工作服务器,从而能够重新生成开放事务的地址链接和信息。·不需要对TSLD的额外的输入/输出操作,就可以执行对TSLD的数据结构信息的增加的存储。·即使当系统包括分别在一个网络上的多个磁盘和/或多个服务器时,软写入操作与事务的提交和终止也一起被支持。·可以以灵活的方式来实现检验点操作,例如作为一个后台操作或通过标识自从上个检验点后变化的数据结构中的成分。·故障之后的TSLD的恢复是快速的,由于只有该TSLD上次检验点操作后被存储的块帧需要被读取。·故障之后的TSLD的恢复产生关于开放事务的足够信息以使得该事务的参加者能够查询事务状态并获得是否提交或终止该事务的一致意见。在客户故障的情况下,TSLD上有足够的信息用于提交或终止事务,其信息可以被其它客户影响。因此,根据本发明的优选实施方案,提供了用来支持数据事务的设备,包括用来接收作为连续数据块的数据以存储在各自物理单元的至少一个TSLD;以及控制电路,被配置用来当写入至少一个TSLD时,将连续数据块、至少一些数据块以及指示了连续数据块中后来的数据块的物理单元的至少一个参数一起传送到至少一个TSLD,并被配置以转换数据的状态,以便利用至少一个参数完成数据事务。控制电路最好包括将控制电路耦合到至少一个TSLD的至少一条通信链路,且控制电路通过至少一条链路管理至少一个TSLD。上述设备最好包括一个数据传输网络,用来将数据传送到控制电路并与该控制电路耦合。此外数据传输网络最好被耦合到并传送数据到至少一个TSLD,且控制电路通过该数据传输网络来管理至少一个TSLD。上述设备最好包括一个将数据传送到控制电路的客户。控制电路最好包括至少一个易失性存储器,用来存储含有指示了至少一些数据块的一个或多个特性的数据的一个或多个数据结构,这些数据中的至少一些由控制电路写入到至少一个TSLD,这样至少一个易失性存储器的内容可以被从存储在至少一个TSLD中的一个或多个数据结构中的数据中的至少一些数据中再生。此外,数据结构中的一个最好包括一张转换表,用来将连续数据块的逻辑块地址映射到各自的物理地址并标记数据块中的哪个正在参与一个开放的数据事务。数据结构中的一个最好包括一个辅助转换表,用来为每个各自的开放数据事务,将与一个开放事务相关的逻辑块地址映射到在启动该事务之前存在的连续数据块的各自的物理地址,并映射到开放数据事务的一个标识。控制电路最好将各自的逻辑地址写入到连续的数据块。控制电路最好将一个数据事务的标识写入到连续的数据块。控制电路最好将一个数据事务的状态的记录器的标识写入到连续的数据块。数据结构中的一个最好包括一个分配位图,用来映射连续数据块中的每一个的可用性。此外,数据结构中的一个最好包括一个连续数据块中的下一个可用数据块的单元的指针值。数据结构中的一个最好包括连续数据块中的第一可用数据块的单元的指针值。至少一个TSLD最好包括一个有磁头的磁盘,并且控制电路在一个单一方向上在磁盘的表面上,以磁头的一系列扫描,将数据块写入到磁盘中。此外,一系列扫描中的每一个最好有一个检验点号,且数据结构中的一个包括一个指示了当前检验点号的值。数据结构中的一个最好包括一个工作分配位图拷贝,用来存储在磁头的一个或多个扫描结束处的连续数据块中的每一个的可用性。当磁头的一个或多个扫描完成时,控制电路最好是将一个或多个数据结构中的至少一些数据写入至少一个TSLD中。数据结构中的一个最好包括一个事务状态日志,用来存储数据事务的至少一个记录,其中至少一个记录包括数据事务的一个标识以及参加该数据事务的至少一个TSLD的标识,其中至少一个记录包括一组记录中的至少一个,这组记录包括开始-事务、提交-事务和终止事务,它们分别记录事务已经开始、被提交和被终止。控制电路最好在连续的数据块上写入尾标,该尾标包括一个或多个指示了每个数据块使用的数据域。一个或多个数据域最好包括数据事务的一个标识以及作为数据事务状态记录器的主TSLD的标识。一个或多个数据域最好包括数据块的一个逻辑地址。一个或多个数据域最好包括一个指示了数据事务状态的标记。该设备最好包括一个磁盘控制器,它控制至少一个TSLD,其中磁盘控制器能够从控制电路写入至少一个TSLD的数据中恢复一个易失性存储器的内容。至少一个参数最好包括多个参数。数据事务最好包括多个并行数据事务。至少一个TSLD最好包括一个由服务器管理的磁盘。至少一个TSLD最好包括多个TSLD。至少一个参数最好包括一个事务状态日志,它记录了数据事务的一个或多个状态。至少一个参数最好包括至少一个分布式事务状态日志的一部分,该日志记录了数据事务的一个或多个状态。至少一个存储设备最好被用做可以移动的,以便被其它控制电路操作,从而恢复存储在至少一个存储设备中的信息。根据本发明的优选实施方案,还提供了一种用来执行数据事务的方法,包括在至少一个TSLD中接收作为连续数据块的数据、至少一些数据块的每一个和指示了连续数据块中的一个随后数据块的物理位置的参数;以及响应于至少一个参数,转换至少一个TSLD中的数据的状态,以便完成数据事务。至少一个参数最好包括多个参数。在至少一个TSLD中接收数据最好包括将数据通过数据传输网络传送到至少一个TSLD。传送数据最好包括将至少一个TSLD连接到数据传输网络。传送数据最好包括通过控制电路将至少一个TSLD连接到数据传输网络;以及将控制电路连接到数据传输网络。此外,接收数据最好包括从一个客户接收数据。该方法最好包括将一个或多个数据结构存储到至少一个易失性存储器中,上述数据结构含有指示了至少一些数据块的一个或多个特性的数据,并将数据结构中的至少一些数据写入到至少一个TSLD中,以便至少一个固定存储器的内容可以从存储在至少一个TSLD中的一个或多个数据结构中的至少一些数据中恢复。存储一个或多个数据结构最好包括存储一个转换表,该转换表用来将连续数据块的逻辑块地址映射到各自的物理地址,并标记数据块中的哪一个当前正在参加一个开放数据事务。存储一个或多个数据结构最好包括存储一个辅助转换表,用来为每个各自的开放数据事务,而将与一个开放事务相关的逻辑块地址映射到在启动数据事务之前存在的连续数据块的各自的物理地址,并映射到该开放数据事务的标识。接收数据最好包括将各自的逻辑地址写入连续的数据块。该方法最好包括使用转换表来定位一个特定数据块,以便从特定数据块中读取数据。存储一个或多个数据结构最好包括存储一个指示了连续位置中的每一个的可用性的位置位图。此外,将至少一些数据写入至少一个TSLD最好包括使用下列步骤将数据写入连续数据块中的一个扫描一个或多个数据结构以确定至少一个TSLD中的一个可用数据块的物理位置;将一个或多个数据结构的数据和至少一些内容写入物理位置;以及响应于被确定的物理位置,更新一个或多个数据结构。扫描一个或多个数据结构最好包括检查一个逻辑地址是否包括在一个开放事务中。写入一个或多个数据结构的数据和至少一些内容包括的步骤最好是写入对应于一个软写操作的值;以及写入作为主TSLD的至少一个TSLD的标识,以执行临时写操作,该TSDL作为数据事务的一个记录器工作。写入一个或多个数据结构的数据和至少一些内容最好包括写入一个对应于开始操作的值,且更新一个或多个数据结构包括写入一个开始记录,该记录包括事务的一个标识和主TSLD的一个标识,以便执行开始操作。写入一个或多个数据结构的数据和至少一些内容最好包括写入对应于一个提交操作的值,且更新一个或多个数据结构包括清除指示了事务的开放状态的标记;写入一个提交记录,该记录包括事务的一个标识和主TSLD的一个标识,以便执行提交操作;以及更新一个事务状态日志。写入一个或多个数据结构的数据和至少一些内容最好包括写入对应于一个终止操作的值,且更新一个或多个数据结构包括清除指示了事务的开放状态的标记;写入一个终止记录,该记录包括事务的一个标识和主TSLD的一个标识,以便执行终止操作;以及更新一个事务状态日志。该方法最好包括扫描一个或多个数据结构以确定数据事务的状态。该方法最好包括执行一个包括下列步骤的检验点操作锁住一个或多个数据结构;将一个或多个数据结构的内容写入到至少一个TSLD的检验点位置;以及响应于将内容写入至少一个TSLD,来改变一个或多个数据结构的至少一些内容。该方法最好包括执行包括下列步骤的恢复操作从至少一个TSLD中读取一个或多个数据结构的内容;以及响应于上述内容,更新至少一个易失性存储器中的一个或多个数据结构。执行恢复操作最好包括读取自从执行检验点操作以来被写入的所有的一个或多个数据结构的内容。此外,执行恢复操作最好包括读取自从执行检验点操作以来写入的所有一个或多个数据结构的内容,该读取所用时间基本上不多于用来写入自从执行检验点操作以来写入的所有的一个或多个数据结构所用的时间。执行恢复操作最好包括确定一个开放事务的状态以及使得开放事务的一个或多个客户能够查询状态并确定是否提交或终止该开放事务。该方法最好包括执行一个包括下列步骤的事务协调操作选择至少一个TSLD中的一个作为数据事务状态的记录器;提交一个开始事务操作给记录器;为一个响应等待一个来自记录器的预定时间,该响应指示了数据事务的状态;基于上述响应,提交一个或多个软写操作给至少一个TSLD;以及基于上述响应,确定是否提交或终止该事务,通过发出一个提交或终止事务操作。此外,该方法最好包括执行包括下列步骤的事务完成操作从含有指示了一个数据事务状态的内容的至少一个TSLD中读取第一组连续数据块;以及响应于第一组连续数据块的内容,将第二组连续数据块写入至少一个TSLD中,并将一组一个或多个数据结构写入至少一个易失性存储器。数据事务最好包括多个并行数据事务。至少一个TSLD最好包括一个由服务器管理的磁盘。至少一个TSLD最好包括多个TSLD。根据本发明的一个优选实施方案,还提供了用于电子数据存储的设备,包括一个TSLD,用来接收连续数据块以存储到各自的物理位置;以及控制电路,被配置当写入TSLD时,将连续数据块与至少一些数据块、一个或多个指示了连续数据块中的后来的数据块的物理位置的参数一起传送到TSLD。一个或多个参数最好包括多个参数。根据本发明的实施方案,还提供了用于电子数据存储的方法,包括提供连续数据块以存储到TSLD中各自的物理位置;为连续数据块中的至少一些数据块的每一个确定指示了该连续数据块中的一个后来的数据块的物理位置的一个或多个参数;以及将连续数据块和一个或多个参数存储到TSLD中。一个或多个参数最好包括多个参数。根据本发明的一个优选实施方案,还提供了一个用来执行数据事务的计算机软件产品,包括将程序指令记录在其中的计算机可读介质,当其中的指令被计算机读取时,使得计算机在至少一个TSLD中接收作为连续数据块的数据、至少一些数据块中的每一个与指示了连续数据块中的一个后来数据块的物理位置的至少一个参数,并响应于至少一个参数,来转换至少一个TSLD中的数据的状态,以完成数据事务。根据本发明的一个优选实施方案,还提供了一个用于电子数据存储的计算机软件产品,包括其中记录有程序指令的计算机可读介质,当其中的指令被计算机读取时,使得计算机提供连续数据块以存储到TSLD中各自的物理位置,以为连续数据块中的至少一些数据块中的每一个确定指示了连续数据块中的后来的数据块物理位置的一个或多个参数,并将连续数据块以及一个或多个参数存储到TSLD中。现在根据下面的本发明优选实施方案的描述以及附图来更充分地理解本发明,其中图1A是根据本发明的一个优选实施方案,给出了一个分布式存储系统的示意框图,其中磁盘被物理连接到存储服务器且其中事务发生;图1B是根据本发明的一个优选实施方案,给出了替代的分布式存储系统的示意框图,其中磁盘被虚拟连接到存储服务器且其中事务发生;图2是根据本发明的一个优选实施方案,给出了包括在图1A或图1B中的系统的支持逻辑磁盘(TSLD)的事务和服务器之间的关系的示意框图;图3是根据本发明的一个优选实施方案,由TSLD存储的磁盘上块结构的示意框图;图4是根据本发明的一个优选实施方案,表示包括在一个软写操作中的步骤的流程图;图5是根据本发明的一个优选实施方案,表示包括在一个软读操作中的步骤的流程图;图6是根据本发明的一个优选实施方案,表示包括在一个读取操作中的步骤的流程图;图7是根据本发明的一个优选实施方案,表示包括在一个开始操作中的步骤的流程图;图8是根据本发明的一个优选实施方案,表示包括在一个提交操作中的步骤的流程图;图9是根据本发明的一个优选实施方案,表示包括在一个终止操作中的步骤的流程图;图10A是根据本发明的一个优选实施方案,表示包括在一个查询操作中的步骤的流程图;图10B是根据本发明的一个优选实施方案,来自图10A的查询操作的可能结果的状态图;图11是根据本发明的一个优选实施方案,表示包括在一个检验点操作中的步骤的流程图;图12是根据本发明的一个优选实施方案,表示包括在一个对于事务的协调操作中的步骤的流程图;图13是根据本发明的一个优选实施方案,表示包括在第一恢复操作中的步骤的流程图;图14是根据本发明的一个优选实施方案,表示包括在第二恢复操作中的步骤的流程图;图15是根据本发明的一个优选实施方案,表示包括在第三恢复操作中的步骤的流程图;图16是根据本发明的一个优选实施方案,表示包括在事务完成操作中的步骤的流程图。具体实施例方式现在讨论图1A,它是根据本发明的一个优选实施方案,表示了一个其中事务发生的分布式存储系统20的示意框图。系统20包括多个作为存储设备操作的磁盘28、30和34。磁盘34连接到存储服务器32,包括使得服务器32能够管理磁盘的控制电路33。磁盘28和30连接到存储服务器26,包括分别使得服务器26能够管理磁盘的控制电路35和37。由恰当的控制电路管理的存储设备,例如磁盘28、30和34在这里称作事务支持逻辑磁盘(TSLD)。这里称作TSLD接口的控制电路执行存储设备或连接到电路上的设备上的TSLD操作。下面给出了TSLD、TSLD接口以及TSLD操作的详细描述。系统20内的每个磁盘28、30和34被分配一个唯一的标识,这里分别称作TSLD1、TSLD2、TSLD3。尽管系统20包括三个TSLD,但应当理解系统可以包括任意数量的TSLD,其中的每一个连接一个存储服务器(下面简单地称作服务器)并由它进行管理。还应当理解,系统20中的每个服务器管理一个或多个TSLD。服务器26和32进而又连接到一个数据传输网络24,例如一个局域网,客户22连接到该网络。客户22知道系统20中的每个磁盘的标识并知道管理每个磁盘的各自的服务器。客户22协调一个TSLD事务的执行。它启动一个TSLD操作,并将该TSLD操作与操作将应用于的一个或多个TSLD的标识转发到恰当的存储服务器或服务器。一旦接收到一个TSLD操作,每个服务器执行由客户22指定的一个或多个TSLD上的操作,并对客户做出响应。图1B是根据本发明的一个优选实施方案,表示替代的其中事务发生的分布式存储系统40的示意框图。除了下面描述的区别之外,系统40的操作一般类似于系统20的操作(图1A),其中由系统40和20中的相同参考编号指示的元件一般在结构和操作上都是相同的。系统40包括服务器26和32以及磁盘TSLD1,TSLD2,TSLD3被连接到的一个存储区域网络42。服务器26和32通过网络42被虚拟连接到并管理其各自的磁盘,如图中的虚线所示。通过网络42转发一个TSLD操作给恰当的服务器或多个服务器,客户22启动该操作,且每个特定服务器通过网络响应客户22。图2是根据本发明的一个优选实施方案,表示服务器26和TSLD28之间的关系的示意框图。尽管下面的描述应用于包括在服务器26中的TSLD28及其相关TSLD接口35,但应当理解系统20和/或系统40中的每个TSLD及各自的服务器基本上如下面对于TSLD28和服务器26的描述来交互。TSLD28包括由磁盘驱动器61操作的一个非固定存储磁盘62。磁盘62最好是在磁介质63中实现,它被磁盘支架79上的磁盘头78读写。如下面更详细描述的,在块写上,磁盘支架79以“移动前向存储”动作操作。磁盘控制器76控制磁盘62的操作。磁盘控制器76、磁盘驱动器61及其所有部件最好是流行的、行业标准项。利用本领域已知的方法,磁介质63被分成多个物理扇区64a、64b、64c…64z,这里统称为扇区64。每个物理扇区由一个物理扇区地址指向。每个扇区的尺寸最好是等于2的整数次幂的字节,例如512字节。要被存储到磁盘62上的数据被写入多个固定尺寸的块帧位置82a、82b、82c…,这里统称作块帧82。每个块帧最好由第一个扇区的物理地址扇区指向,该第一个扇区由块帧组成。每个块帧82最好是由整数个连续扇区64构成,且每个块帧能够存储数据块。在磁盘62的格式化过程中,一些扇区64被保留用于描述涉及服务器26和磁盘62的物理和逻辑参数。参数包括每个扇区64的尺寸,磁盘62中的扇区的数量,块帧82的尺寸和数量以及磁盘62支持的逻辑块地址(LBA)的范围。同样在磁盘62的格式化过程中保留的是在检验点操作过程中使用的空间,其中除了其它事务之外,服务器26中包含的易失性存储器70中存储的数据被存储到磁盘62中。下面更详细地描述检验点操作。下面将更详细地描述易失性存储器70存储多个固定动态数据结构,这些数据结构作为一个TSLD接口35工作。数据结构的内容最好是由服务器26控制。存储器70作为接口35存储·一个转换表数据结构72,它在LBA和物理块地址之间转换。该转换表将每个逻辑块地址“i”与磁盘62的一个块帧的相应物理地址绑定,这里称作TT(i)。TT(i)最好是容纳最近被存储的逻辑地址为“i”的块的内容。最初,TT(i)的所有值都被设置成NULL(空)。当数据被写入磁盘62时,对于特定逻辑块地址i的TT(i)的值就从NULL值改变,并被更新成为块i上次被存储的块空间的磁盘扇区地址。转换表72还包括一个标记域73,转换表72中的每个项TT(i)的标记被设置来指示块“i”当前正在参加一个开放事务。当一个特定标记被设置时,各自的项TT(i)指向一个未提交的块帧。如下面描述的,对于块i的被提交的块帧可以使用一个辅助转换表项ATT(i)来被找到。如果TT(i)项未被标记,则TT(i)指向对于块i的被提交的块帧。·一个辅助转换表(ATT)数据结构172,是表72的精简形式,包括表72的非空项,其中标记域73被设置。换句话说,辅助转换表172记录当前包含在一个开放事务中的块。表172包含对于包含在开放事务中的每个块i的项,在开放事务之前被存储的块i的相应的块帧地址ATT(i),以及块i当前被包含在的事务的标识‘TransID’。·一个分配位图数据结构74,用来在块到磁盘62的每次存储过程中,定位可用的磁盘块帧82。对于每个块帧i,如果块帧对于块内容的存储是可用的,则分配位图74中的相应比特被设置成0。如果块帧含有一个块的内容,或者如果块帧已经被保留由服务器26数据结构使用,则相应的比特被设置成1。当磁盘62被初始化时,使得除了那些为服务器26所保留的所有块帧都成为可用的,以便分配位图74中的每个比特都被设置成0。·一个工作分配位图数据结构174。工作位图174是当执行上一次检验点操作时所做的分配位图74的拷贝。·一个检验点数据结构84,它记录已经被执行的检验点操作的数量。当磁盘支架79已经完成一个移动前向存储动作并准备开始另一个动作时,自动执行检验点操作。最初,将检验点数量84设置为0。·两个指针数据结构,一个第一可用块帧指针86和一个下一个可用块帧指针88。当一个检验点操作发生时,第一可用块帧指针86指向第一个可用块帧。下一个可用块帧指针88指向一个可用的将被下一个块存储操作使用的块帧。指针88在每个块存储操作上被更新。当执行一个磁盘恢复时,由服务器26“重放”自从上一次检验点之后的块存储过程来恢复第一可用块帧指针86所指向的块帧之后的块帧的地址。最初,两个指针都被设置成第一个未保留块帧的地址。·一个事务状态日志数据结构90,它含有关于事务状态的记录列表。每个事务被分配一个通用唯一标识符,这里称作Tid。日志90的记录包括Tid并将一个参加该事务的TSLD的列表94与Tid相关联。日志记录包括三部分记录类型、事务标识符以及列表94。下面详细描述进入日志90的记录类型、开始事务、提交事务以及终止事务。上面描述的每个数据结构部件,即转换表72、辅助转换表172、分配位图74、工作分配位图174、检验点数量84、第一可用块帧指针86、下一个可用块帧指针88以及事务状态日志90被在主存储器70中作为TSLD接口35维护,并在一个对于TSLD28的检验点操作过程中被存储。当一个新块帧被需要用来存储数据时,根据分配位图74,一个块帧被从磁盘62上可用的空闲块帧分配,且工作分配位图184被更新以反映新的分配。为了选择哪个块帧要被写入,服务器26记录下一个可用块帧指针88的值。服务器26使用这个值与分配位图74一起,定位有在上一次被写入的块帧之前的地址的下一个可用块帧。这样,磁盘支架79以移动前向存储动作移动,直到一个检验点操作被调用。在前面参考的临时专利申请60/176507以及被转让给本发明同一受让人的,2000年7月6日提交的专利申请“EnhancedStableDiskStorage(增强固定磁盘存储器)”中描述了有关移动前向存储方法的进一步的细节。当一个客户启动多个TSLD上的事务时,客户选择TSLD中的一个,最好是选择有最小标识的TSLD作为主TSLD。主TSLD作为事务状态的记录器来工作。如下面描述的,事务状态日志90的记录最好是有三种类型。开始事务记录92记录这样一个事实,即一个事务Tid已经开始并且列在参加该事务的TSLD的列表94中。列表94上的第一TSLD96是为事务Tid选择的主TSLD。这里使用的对于开始事务记录92的符号是Begin(Tid;TSLD1,TSLD2...TSLDm)其中TSLD1是主TSLD,TSLD2…TSLDm是参加事务Tid的其它TSLD。一个提交事务记录102记录这样一个事实,即一个事务被提交。每个提交事务记录102包括事务的标识Tid以及参加该事务的TSLD的列表94。这里使用的对于提交事务记录102的符号是Commit(Tid;TSLD1,TSLD2...TSLDm)一个终止事务记录112记录这样一个事实,即事务被终止。每个终止事务记录112包括事务的标识Tid以及参加该事务的TSLD的列表94。这里使用的对于终止事务记录112的符号是Abort(Tid;TSLD1,TSLD2...TSLDm)如下面所描述的,最好是每个开始事务记录92只被存储在对于事务Tid的主TSLD的事务日志中,直到事务被提交或终止。最好是每个提交事务记录102被存储到事务Tid的主TSLD的事务状态日志90中。最好是为了其它还不知道事务被提交的TSLD的利益,当关于事务Tid的数据结构已经被在特定TSLD中更新之后,提交事务记录保留在特定TSLD的事务状态日志中。在一个特定的主TSLD中,提交事务记录代替开始事务记录。最好是每个终止事务记录112被存储在事务Tid的主TSLD的事务日志90中。最好是为了其它还不知道事务被终止的TSLD的利益,当关于事务Tid的数据结构已经被在特定TSLD中更新之后,每个终止事务记录保留在特定TSLD的事务状态日志中。在一个特定的主TSLD中,终止事务记录代替开始事务记录。在非主TSLD中,最好是将该非主TSLD所涉及的终止事务和提交事务记录一直保留到下一个检验点。图3是根据本发明的一个优选实施方案,由TSLD28存储在磁盘上块结构的示意图。数据被作为块200存储到特定块帧82中。块200包括一个客户部分202,由客户202使用存储其内容数据,且一个尾部204包括由TSLD28使用的域。尾部204包括下列域·一个磁盘上的检验点数量域206,其中存储了检验点数量84的当前值。这是在块存储操作时的检验点数量。·一个逻辑块地址(LBA)域208,其中存储了块200的LBA。·一个块类型域210,其中存储了描述了块200类型的标记。块200的类型在下面被描述。·一个事务标识域212,其中存储了块200正在参加的事务的标识Tid。可替代地,如果当块被存储时,块200没有在参加一个事务,则将域212设置为0。·一个主TSLD域214,其中存储了块200正在参加的事务的主TSLD的标识TSLDp。可替代地,如果当块被存储时,块200没有在参加一个事务,则将域214设置为0。块类型域210可以假设下面类型的块·一个数据块类型,其中来自客户22的内容数据被存储在客户数据域202中,且其中块被存储的块帧被事务表72定位,且其中块不是一个开放事务的一部分。·一个软写块类型,其中来自客户22的内容数据被存储在客户数据域202中,且数据被存储在的未提交块帧被表72指向,但旧的被提交块的内容所存储在的块帧不被释放以由客户22使用,而是由表172指向。两个块帧都在分配位图74中被标记分配。·一个开始块类型,其中将特定事务标识Tid与参加事务Tid的TSLD的标识一起存储到域202中。这种块记录这样一个事实,即事务Tid已经开始,并且开始块占用其各自的块帧,直到下一个检验点操作。在一个成功的检验点操作之后,如上所述,释放被占用的块帧。·一个提交块类型,其中将特定事务标识Tid与参加事务Tid的TSLD的标识一起存储到域202中。一个特定提交块记录这样一个事实,即事务Tid已经被提交,并且占用其各自的块帧,直到下一个检验点操作。在一个成功的检验点操作之后,如上所述,释放被占用的块帧。·一个终止块类型,其中将特定事务标识Tid与参加事务Tid的TSLD的标识一起存储到域202中。一个特定终止块记录这样一个事实,即事务Tid已经被终止,并且占用其各自的块帧,直到下一个检验点操作。在一个成功的检验点操作之后,如上所述,释放被占用的块帧。图4是给出了根据本发明的一个优选实施方案,包括在软写操作220中的步骤的流程图。软写操作220将事务Tid的内容,有primTSLD值的主TSLD存储到由事务Tid更新的每个块帧中。这里使用的对于软写操作220的符号是Soft-Write(Tid,primTSLD,i,contents)下面假设TSLD28是参加TSLD的一个,且假设操作220由客户22启动。操作220也将内容与一个LBAi相关,而不丢失LBAi的旧内容。软写操作220作为一个临时写操作动作,其可以在后来被提交或终止,从而作为两段提交协议的第一段来动作,这在发明背景中已被描述过。在检查步骤222中,检查转换表72以查找是否对应于LBAi,TT(i)的项对其标记进行了设置。如果标记被设置了,则将下面参考图16要描述其功能的开放事务错误代码返回给客户22。如果标记未被设置,则在扫描步骤224中,分配位图74被扫描以查找跟随在下一个可用块帧88中记录的块帧之后的第一个可用块帧。如果在可用性检查步骤226中没有找到可用的块帧,则执行如下所述的一个检验点操作。如果一个块帧被找到,则假设其物理地址为“a.”。在存储步骤228中,将检验点数量、LBAi、事务标识Tid以及主TSLDprimTSLD这些值写入到下一个可用块帧88中记录的块帧中的块的各自的尾部域206、208、212和214(图3)中。将对应于块类型,即软写块类型的值写入到块帧的尾部域210中。此外,将客户22提供的Tid的数据内容写入块帧的数据域202中。在更新步骤230,在存储器26中,执行下列分配·在工作分配位图174中,A(下一个可用块帧)←1;·在辅助转换表172中,(ATT(i),TransID)←<TT(i),Tid>;·在转换表72中,TT(i)←下一个可用块帧,且TT(i)的标记被在标记域73中设置;且·数据结构下一个可用块帧88被设置成值“a.”应当理解,作为已经被完成的事务的一部分,软写操作220将数据和尾部域数据写入下一个可用块帧88的块中。不过,用来容纳i的旧内容的特定块帧不被改变,且通过将该特定块帧的分配比特设置为0来不释放该块帧,这样如果需要的话,旧内容仍可以被访问。图5是给出了根据本发明的一个优选实施方案,包含在软读操作240中的步骤的流程图。作为一个未完成事务的一部分,软读操作240读取在软写操作220中已经被存储的数据内容。这里使用的对于软读操作240的符号是Soft-Read(i)在检查步骤241中,检查转换表72以查找对应于LBAi,TT(i)的项是否对其标记进行了设置。如果标记未被设置,则将一个开放事务错误代码返回给客户22。如果标记被设置,则在读取步骤242中,诸如客户22的一个请求者请求在转换表72中,由TT(i)指向的块帧中的块的数据内容202。数据内容202被返回给请求者,然后软读操作240终止。图6是给出了根据本发明的一个优选实施方案,包含在读操作250中的步骤的流程图。操作250被用来读取已经完成一个事务的块帧中的逻辑块i的数据内容,并将该内容返回给诸如客户22的一个请求者。这里使用的对于读操作的符号是Read(i)在第一步骤254中,在转换表72中由TT(i)指向的块帧中的块的数据内容202被从TSLD中读取。通过检查TT(i)的标记是否被设置,操作250继续。如果标记被设置,表明包含TT(i)的事务还没有被完成,则将一个开放事务错误信号返回给先前读取了块帧的请求者。如果TT(i)的标记未被设置,表明块不包含在一个开放事务中,则通过将块帧返回给用户,操作250完成。然后操作250终止。图7给出了根据本发明的一个优选实施方案,包含在一个开始操作260中的步骤中的流程图。操作260存储这里称作开始块的一个块,它记录了在一个主TSLD上的一个事务的细节。如上面参考图2所描述的,操作260还存储开始事务记录92,Begin(Tid;TSLD1,TSLD2...TSLDm)。假设该事务有一个标识Tid,并包含下列的TSLDTSLD1,TSLD2...TSLDm。最好是TSLD1作为事务Tid的主TSLD(primTSLD)工作。一个事务协调者,运里假设是客户22,启动主TSLD,即TSLD1上的开始操作260。这里使用的对于开始操作260的符号是Begin(Tid;primTSLD,TSLD2,TSLD3...TSLDm)在记录步骤262中,标识Tid和事务的参加的TSLD,即TSLD1,TSLD2,TSLD3,...TSLDm被记录在事务日志90中。在扫描步骤264中,分配位图74被扫描以查找跟随在下一个可用块帧88中记录的块帧之后的第一个可用块帧。如果在可用性检查步骤266中,没有找到可用块帧,则执行检验点操作。如果随后的块帧被找到,则假设其物理地址为“a.”。在存储步骤268中,将检验点数量、事务标识Tid以及TSLD1(primTSLD)这些值写入记录在下一个可用块帧88中的块帧的块的各自的尾部域206、212和214(图3)中,这里假设该块帧的物理地址为“p.”。将对应于块类型,即开始块类型的值写入块的尾部域210中。在逻辑地址域208中,没有做任何项。同样,在存储步骤268中,事务的参加TSLD,即TSLD1,TSLD2...TSLDm被在块帧“p.”的块的数据域202中记录。在更新步骤270中,在存储器26中,数据结构下一个可用块帧88被设置为值“a.”。然后操作260终止。应当指出,在操作260中,工作分配位图174没有被更新,即A(p)保持设置为0。这样,块帧“p”保持标记为空闲。不过,在操作260完成时,“a”大于“p”,这样,在操作260之后的操作将总是寻找有物理地址大于“p.”的块。这样,在磁盘支架79的当前扫描过程中,块帧“p”将不被存储进去。当执行一个检验点操作时,当前扫描终止,在该检验点操作过程中,块帧“p”中的所有有关参数都被存储到磁盘62中。检验点操作之后,块帧“p”对于进一步的存储操作成为可用的。图8是给出了根据本发明的一个优选实施方案,包含在一个提交操作280中的步骤的流程图。操作280应当在所有与一个给定事务相关的软写操作220都已经成功终止之后才被执行,并使得所做的临时写操作成为永久的。对于软写操作220的操作280应当被在事务Tid中包含的每个TSLD上执行。这里使用的对于提交操作280的符号是Commit(Tid;primTSLD,TSLD2,TSLD3,...TSLDm)如下所述,步骤284、286和288存储一个提交块到磁盘62。所存储的提交块作为一个提交操作的临时存储器来工作,直到执行了一个随后的检验点操作为止。在扫描步骤284中,对分配位图74进行扫描以查找跟随在下一个可用块帧88中记录的块帧之后的第一个可用块帧。如果在可用性检查步骤286中没有找到可用块帧,则执行一个检验点操作。如果找到了一个随后的块帧,则假设其物理地址为“a.”。在存储步骤288中,检验点数量、事务标识Tid以及TSLD1(primTSLD)这些值被写入在下一个可用块帧88中记录的块帧中的块的各自尾部域206、212和214(图3),这里假设该块帧的物理地址为“p.”。对应于块类型,即一个提交块类型的值被写入块帧的尾部域210。在逻辑地址域208中,没有做任何项。同样,在存储步骤288中,事务的参加TSLD,即TSLD1,TSLD2,...TSLDm被在块帧“p.”的块的数据域202中记录。在更新步骤290中,在存储器26中,数据结构下一个可用块帧88被设置为值“a.”。在扫描步骤292中,对于包含事务标识Tid的项,辅助转换表172被扫描。对于每个被找到的项,·将工作分配位图174中的相应比特设置为0,这样由项指向的块帧成为可用的。·在转换表72中,对应于在辅助转换表172中找到的那些的每个项的标记被清除。·将辅助转换表172中的项清除,以便以精简形式保持表172。在记录步骤294中,如果TSLD28是主TSLD,即TSLD1,则如记录步骤262(图7)中所执行的事务日志90的开始事务记录,由事务Tid和参加的TSLD的一个提交记录所代替,然后提交操作280终止。如果TSLD28不是主TSLD,则在步骤292之后,操作280终止。应当理解,块帧“p”只被占据到下一个检验点操作,之后该块帧成为可用的。图9是给出了根据本发明的一个优选实施方案,包含在终止操作300中的步骤的流程图。如果与一个给定事务相关的软写操作220中的一个失败了,则应当执行操作300。操作300从操作220中执行的临时写操作中退出,并且在执行操作220之前,使得块帧的内容成为可用的。至于软写操作220,操作300被在包含在事务Tid中的每个TSLD上执行。这里使用的对于终止操作300的符号是Abort(Tid;primTSLD,TSLD2,TSLD3,...TSLDm)步骤304、306、308和310将一个终止块存储到磁盘62。所存储的终止块作为终止操作的临时存储器来工作,直到执行了一个随后的检验点操作为止。在操作上,步骤304、306和310基本上类似于如上所述的步骤284、286和290。在存储步骤308中,检验点数量、事务标识Tid以及TSLD1(primTSLD)这些值被写入在下一个可用块帧88中记录的块帧中的块的各自的尾部域206、212和214(图3),这里假设该块帧有一个物理地址“q.”。对应于块类型,即终止块的值被写入块的尾部域210。在逻辑地址域208中,不做任何项。同样,在存储步骤308中,事务的参加TSLD,即TSLD1,TSLD2,...TSLDm被记录在块帧“q.”中的块的数据域202。在扫描步骤312中,对于包含事务标识Tid的项,扫描辅助转换表172。对于每个找到的项,转换表72被用来定位相应的块帧。然后在工作分配位图174中的相应比特被复位。同样在步骤312中,当比特已经被复位之后,转换表72被更新,以便被找到的项现在指向在辅助转换表172中找到的项。最后,将辅助转换表172中的每个项清除,并且将转换表72中每个相应项的标记清除。在记录步骤314中,如果TSLD28是主TSLD(TSLD1),则如记录步骤262(图7)所执行的事务日志90的开始事务记录被一个事务Tid和参加TSLD的终止记录所代替,然后终止操作300终止。如果TSLD28不是主TSLD,则在步骤312之后,操作300终止。应当理解,块帧“q”只被占用到下一个检验点操作为止,之后该块帧成为可用的。图10A是给出了根据本发明的一个优选实施方案,包含在一个查询操作中的步骤的流程图。对于系统20或系统40中的每个TSLD,查询操作320检查事务状态日志90关于一个特定事务Tid的状态,并将所知道的关于该事务的信息返回给一个诸如客户22的请求者。这里使用的对于查询操作320的符号是Query_State(Tid)在第一查询322中,检查日志90以看对于特定事务的开始记录是否存在。如果开始记录存在,表明所查询的TSLD是主TSLD并且该事务Tid还在进行中,即是开放的,则返回一个带有参加TSLD列表(从开始记录中得出)的返回开放状态。列表表明该事务是开放的并列出了其它参加的TSLD。如果一个开始记录不存在,则操作320继续到第二查询324,其中检查辅助转换表172以看该表是否包括对于事务Tid的项。如果该表包括对于Tid的一个或多个项,表明该事务在进行中,则返回一个“开放”声明。如果对于查询324的回答是否定的,则操作320继续到第三查询326,其中检查事务日志90以看对于特定事务的终止记录是否存在。如果一个终止记录存在,则返回一个“终止”声明。如果对于查询326的回答是否定的,则操作320继续到第四查询328,其中检查事务日志90以看对于事务的提交记录是否存在。如果一个提交记录存在,则返回一个“提交”声明。如果一个提交记录不存在,则返回一个“未知”声明,且存在320终止。图10B是给出了根据本发明的一个优选实施方案,来自特定TSLD上的操作320的可能结果的状态图330。如图330所示,一个特定事务Tid能够在一个开放状态332、一个被终止状态334、一个被提交状态336或一个未知状态338中存在。如果对于一个事务Tid的主TSLD以“未知”来响应一个查询状态,而另一个非主TSLD以“开放”状态来响应该查询,则可以推断出该事务已经被提交。这种情况发生在当该事务已经在主TSLD中成功执行,但在非主TSLD中未成功执行提交操作。图11是给出了根据本发明的一个优选实施方案,包括在检验点存在340中的步骤的流程图。虽然下面关于操作340的描述特定应用于TSLD28(图2),但系统20或系统40中的所有TSLD基本上遵循与下面描述的在执行各自的检验点操作中的相同的步骤。检验点操作340将易失性存储器70中的TSLD接口35中容纳的值写入磁盘62,其中值被永久存储。最好是检验点操作340写入预分配给该操作的磁盘62上的块帧82e。最好是不将检验点数据写入块帧82e中相同的空间,但以一种交互方式写入,从而先前的检验点数据不被立即写入或擦除。检验点操作340以周期间隔将来自TSLD35的数据结构复制到磁盘62中,这样在失败事件中,TSLD28能够快速恢复。可以在任何时间由TSLD28执行检验点操作340,但必须当在下一个可用块帧88周围没有可用块帧时执行。在初始步骤342中,TSLD接口35中的所有数据结构被锁住,这样TSLD28停止支持除检验点操作之外的操作。在第二步骤344中,检验点操作340读取来自接口35的第一个可用块帧86的值。块帧86是从工作分配位图174中确定的空闲的并被与最低的磁盘扇区地址相关的块帧。在增加步骤346中,检验点数量84的值被增加,且被增加的值被读取。在存储步骤348a、348b、348c、348d和348e中,操作340将转换表72、复制转换表172、工作分配位图174、第一个可用块帧86、被增加的检验点数量84和事务状态日志90写入到块帧32e中。在第一重赋值步骤350中,下一个可用块帧88的值被赋值成为如步骤344中找到的第一个可用块帧86的值,其下一个可用块帧被用于一个随后的移动前向存储操作。在第二重赋值步骤352中,分配位图74被赋值成为工作分配位图174的值。然后操作340解锁TSLD接口35中的被锁住的数据结构并终止,于是TSLD28利用被更新的数据结构恢复操作。当检验点操作340运行于一个特定TSLD上时,TSLD停止其它操作。为了减小对于一个系统用户的影响,可以在小时间段中执行操作340。在上述临时专利扇区以及上述题为“EnhancedStableDiskStorage(增强固定磁盘存储器)”的专利申请中,描述了基本上类似于操作340的检验点操作。此外,还详细解释了用于在小时间段中执行检验点操作以减小对系统用户影响的方法。本领域中的技术人员能够采用题为“EnhancedStableDiskStorage(增强固定磁盘存储器)”的专利申请中的方法以在小时间段中执行操作340。图12是给出了根据本发明的一个优选实施方案,包含在对于事务Tid的一个协调操作中的步骤的流程图。这里假设由作为事务协调者的客户22启动,且假设参加该事务的TSLD是TSLD1,TSLD2,...TSLDm。在初始步骤362中,客户22选择参加的TSLD中的一个作为对于事务Tid的主TSLD工作。通过选择带有最低标识符或最不活动的TSLD或者任意地来进行该选择。这里假设TSLD1是主TSLD(primTSLD)。在开始事务步骤364中,客户22将开始操作260(图7),Begin(Tid;primTSLD,TSLD2,TSLD3,...TSLDm)提交给TSLD1,并且在第一等待步骤365中,对于一个来自TSLD1的关于开始操作已经被成功完成的确认等待一个预定时间段。如果没有确认,则客户22提交终止操作300,Abort(Tid;primTSLD,TSLD2,TSLD3...TSLDm)给TSLD1并终止该事务。如果客户22接收到开始操作260已经被成功完成的确认,则在软写步骤366中,客户22将一个或多个软写操作220(图4),Soft-Write(Tid;primTSLD,i,contents)提交给参加的TSLD中的每一个。客户22将下列数据提供给每个参加的TSLD事务标识Tid、主TSLD标识(TSLD1)、相关逻辑块地址以及要被存储的相关数据块内容。在第二等待步骤368中,客户22等待一个预定时同段以接收来自参加的TSLD中的每一个的关于每个软写操作被成功完成的肯定确认。这对于每个软写操作继续。如果在预定时间段中,从所有参加的TSLD中都没有接收到肯定确认,则在终止步骤370中,客户22将终止操作300,Abort(Tid;primTSLD,TSLD2,TSLD3,...TSLDm)提交给参加的TSLD中的每一个。如果主TSLD没有能够确认操作300已经被成功完成,则在等待对于每个完成确认的提交之后,客户22进而又将一个吸附(sticky)终止操作(下面将解释),StickyAbort(Tid;primTSLD,TSLD2,TSLD3,...TSLDm)提交给参加的非主TSLD中的每一个一旦接收到一个确认,或如果所有参加的TSLD已经被查询且没有一个做出响应,则终止协调操作360。如果在预定时间段中,从所有参加的TSLD接收到了肯定确认,到在提交步骤372中,客户22将提交操作280,Commit(Tid;primTSLD,TSLD2,TSLD3,...TSLDm)提交给事务的主TSLD。如果主TSLD确认了该提交操作,然后操作被发送给参加的TSLD中的每一个。如果TSLD没有能够确认操作280已经被成功完成,则在等待对于每个完成确认的提交之后,客户22进而又将一个吸附提交操作(下面将解释),Stickycommit(Tid;primTSLD,TSLD2,TSLD3,...TSLDm)提交给参加的非主TSLD中的每一个。一旦接收到一个确认,或如果所有参加的TSLD已经被查询且没有一个做出响应,则终止协调操作360。吸附提交操作基本上与提交操作相同,相应的吸附提交记录基本上与提交记录相同。吸附提交操作和记录应用于非主TSLD。作为吸附提交操作的结果,一个吸附提交记录被添加到非主TSLD的事务状态日志上。不能将一个吸附提交记录从一个非主TSLD的事务状态日志上清除,除非由一个客户明确地指示。上面的描述也应用于吸附终止操作和终止操作之间的关系,以及吸附终止记录和终止记录之间的关系。应当理解,协调操作360试图提交或终止事务Tid,并在事务的参加TSLD中的至少一个上记录操作的结果。图13是给出了根据本发明的一个优选实施方案,包含在第一恢复操作373中的步骤的流程图。在从诸如系统20或系统40中的服务器26这样的存储服务器故障中恢复之后,执行操作373。如下面详细描述的,操作373要求扫描分配位图74。(上面提到的题为“EnhancedStableDiskStorage(增强固定磁盘存储器)”的专利申请给出了从一个非固定磁盘存储器的故障中恢复的替代方法的详细描述,本领域中的技术人员将能够应用该描述使诸如服务器26的服务器从系统故障中恢复。该替代方法花费的时间是自从上次检验点以来被写的块的数量的线性函数。)在第一读取步骤374中,在上次检验点操作340中已经被存储到磁盘62上的分配位图74的值被在TSLD接口35中读回到分配位图74和工作分配位图174中。在第二读取步骤375中,在上次检验点操作340中被存储到磁盘62上的第一个可用块帧86的值被读回到第一个可用块帧86和下一个可用块帧88中。在第三读取步骤376中,在上次检验点操作340中被存储的转换表72、辅助转换表172、检验点数量84以及事务状态日志90中的值,被在TSLD接口35中读回到各自的数据结构中。在第四读取步骤377中,存储在由下一个可用块帧88给出的块帧地址中的块被读取。在更新步骤378中,当检查TSLD接口35中的检验点数量84对应于对于每个被读取的块的被存储检验点数量时,1.根据上次被读取的块(从步骤377开始)更新TSLD接口35中的所有相关数据结构。即重放当存储块帧时出现的TSLD操作。2.通过在分配位图74中向前查找标记了一个可用块帧的第一个比特,并在该块帧中读取块,来定位要被存储到的下一个块帧。3.继续步骤378a和378b,忽略由于故障扇区64而不能读取的任何块,直到已经在前向完成扫描分配位图74为止。然后操作373终止。应当理解,利用“重放”自从上次检验点操作以来执行的TSLD操作这个过程,第一个恢复操作373基本上将TSLD接口35上的数据结构完全返回到它们故障之前的值,除了由不能被读取的块所引起的本地化错误之外。通过从上次检验点操作写入磁盘62的一个或多个参数来实现该重放过程,以便建立自从上述操作后写入的块帧位置。图14是给出了根据本发明的一个优选实施方案,包含在第二恢复操作380中的步骤的流程图。操作380最好是在已经在一个这里假设是服务器26的被恢复的服务器上结束的操作373之后执行,以便确定开放事务的状态。在恢复操作380的第一步骤382中,服务器26对于开始事务记录扫描其事务状态日志90,该记录指示了其中TSLD28是主TSLD的开放事务。对于每个这样的事务,在查询步骤384中,TSLD28对于一个提交或终止记录,检查事务的每个参加的TSLD。在更新步骤386中,TSLD28根据步骤384的结果更新其事务日志90。然后第一恢复操作380终止。应当理解,通过执行操作380,TSLD在一个状态中,在该状态中,它能够用更新信息响应来自包含在其中TSLD28是主TSLD的事务中的其它TSLD的查询。图15是给出了根据本发明的一个优选实施方案,包含在第三恢复操作390中的步骤的流程图。至于恢复操作380,最好是由服务器26在从故障中恢复后,以及在执行了操作380之后执行恢复操作390。在第一步骤392中,服务器26扫描其如上所述被重建的辅助转换表172,以查找看来是开放的事务。对于每个这样的事务,服务器26执行下面的步骤。在查询步骤394中,服务器26定位对应于特定事务的软写块,并查询其事务日志90以找到事务的状态。如果事务日志90提供了事务的状态,则服务器26按要求更新存储器70中的数据结构并继续下一个开放事务。如果事务日志90不能提供事务的状态,则在第二查询步骤396中,如事务的块帧的尾部域214规定的事务的主TSLD被查询。服务器26将对于主TSLD的查询结果包含在TSLD接口35的数据结构中。当步骤392中找到的所有开放事务都已经通过步骤394和/或步骤396被处理后,操作390终止。图16是给出了根据本发明的一个优选实施方案,包含在由客户执行的事务完成操作400。典型地,这作为执行事务时客户故障的结果。操作400最好是由系统20或系统40中的客户在其试图读取一个特定事务中的特定块帧时接收到一个开放事务错误返回时执行。(如上所述,例如在软写操作220的检查步骤222中。)这里,假设客户是客户22,假设块帧是TSLD28中的块帧。开放事务错误指示块帧64a正在参加一个开放事务。操作400使得一个开放事务的参加者能够建立是否提交或终止该事务的一致意见,从而完成该事务。在第一步骤402中,客户22在块帧64a上执行软读操作240(图5),即Soft-Read(i),并接收事务标识Tid以及主TSLD的标识。在第一查询步骤404中,客户22在主TSLD上执行查询操作320(图10A),即Query_State(Tid),并根据接收到的响应来工作。如果没有响应,则由于主TSLD不在运行,客户22不能够完成该事务。在这种情况下,在等待步骤406中,客户22等待主TSLD被发送到一个运行中的服务器。如果在第一响应步骤408中,主TSLD用一个“未知”声明来响应,则客户22在特定TSLD上执行提交操作280,即Commit(Tid;primTSLD,TSLD2,TSLD3,...TSLDm),从该TSLD上客户接收开放事务错误信号,在这种情况下该特定TSLD是TSLD28。如果在第二响应步骤410中,主TSLD用一个“开放”声明与参加该事务的其它TSLD的列表一起来响应,则在第二查询步骤412中,客户22进而又在参加的TSLD中的每一个上执行查询操作320。如果从参加的TSLD中的任何一个接收到一个明确的响应,即“提交”或“终止”回答,则在第三响应步骤414中,客户22在剩余的参加的TSLD上执行各自的提交操作280或终止操作300,即Abort(Tid;primTSLD,TSLD2,TSLD3,...TSLDm)。如果在第二响应步骤412中,所有参加的TSLD返回一个“开放”回答,则在第四响应步骤416中,万一在自从操作400开始后有一个变化,客户22再次设法读取初始的块帧,即块帧64a。如果没有变化,则客户22在参加的TSLD上执行终止操作300。如果在第二响应步骤412中,参加的TSLD中的一个没有响应,则在第五响应步骤418中,客户22等待来自特定TSLD的响应,因为可能特定的未响应的TSLD有所要求的回答。在步骤406、408、414、416或418之后,操作400终止。应当理解,在TSLD28可访问的所有时间中,TSLS28的一个特定块帧82或者不参加一个事务,或者参加,以便事务表72会标记该参加。相同的情况应用于系统20或系统40中其它可访问的TSLD和它们各自的转换表。这样,在事务完成操作400中,客户22能够读取一个TSLD上的块帧的块内容以及另一个TSLD上的块帧的块内容,这样系统20或系统40显得不一致。不过,即使在这种情况下,客户也知道系统的状态并能够得出关于任何未完成事务的状态。为了最小化事务状态日志90的尺寸,当不再需要记录时,需要将记录从日志中清除。如上所述,在主TSLD中,每个开始事务记录被一个提交记录或一个终止记录所代替。在预定的时间间隔之后,在一个主TSLD上的提交记录能够被清除,因为不再需要它们了。(如上所述,如果已知一个事务在一个非主TSLD上是开放的,并且主TSLD当被查询时,用“未知”来响应,则假设事务已经提交)。一旦主TSLD已经确认相关事务的所有参加的TSLD都知道事务的状态,则在主TSLD上的终止记录可以被清除。一旦对于事务的主TSLD已经查询了关于该事务的一个非主TSLD,则该非主TSLD就能够清除一个特定事务的提交或终止记录,因为在进行查询时,主TSLD记录了事务的状态。因此最最好是,在一个系统内的TSLD如上所述地进行协调,以将不需要的事务记录从事务状态日志90中清除。应当理解,尽管系统20和系统40使用了多个TSLD和管理这些TSLD的多个服务器,但本发明的原则也适用于管理一个TSLD的一个服务器。此外,应当理解,当多个并发事务在一个或多个TSLD上被执行时,本发明的原则适用于所述多个并发数据事务的恢复和完成,因为这些多个事务基本上是互相独立记录和恢复的。还应当理解,本发明的范围包括除了上面描述的用于在服务器的一个故障之后,从连续数据块中恢复数据的方法之外的方法,其中指示一个连续数据块的位置的一个或多个参数被写入一个存储器设备。这些方法的例子在临时专利申请60/176507和题为“EnhancedStableDiskStorage(增强固定磁盘存储器)”中被描述。还应当理解,本发明的优选实施方案被作为计算机软件产品而提供。这样一种产品可以作为一个电子数据传输或者以诸如CD-ROM这样的计算机可读介质上的可触摸形式或者两种形式的混合来提供。因此,应当理解,上述优选实施方案是利用实例来引用的,并且本发明不限于被特别示出以及上面所描述的内容。而是,本发明的范围包括上面描述的各种特征的组合或子组合,在阅读了前面描述的先验技术中未公开的描述之后,本领域的技术人员可以做出本发明的各种变化和修改。权利要求1.用于支持数据事务的设备包括至少一个存储器设备,用来接收作为连续数据块的数据以在其中各自的物理位置存储;以及控制电路,被配置当写入至少一个存储器设备时,将连续数据块与至少一些数据块以及指示了在连续数据块中后来的数据块的物理位置的参数一起传送到至少一个存储器设备,并转换数据的状态以利用至少一个参数来完成数据事务。2.如权利要求1的设备,其中控制电路包括将控制电路连接到至少一个存储器装置的至少一条通信链路,其中控制电路通过该至少一条链路管理至少一个存储器设备。3.如权利要求1的设备,包括将数据传送到控制电路并被与之相连的数据传输网络。4.如权利要求3的设备,其中数据传输网络被连接到至少一个存储器设备,并将数据传送到该至少一个存储器设备,其中控制电路通过该数据传输网络管理至少一个存储器设备。5.如权利要求1的设备,包括将数据传送到控制电路的一个客户。6.如权利要求1的设备,其中控制电路包括至少一个易失性存储器,用来存储含有指示了至少一些数据块的一个或多个特性的数据的一个或多个数据结构,该至少一些数据块中的至少一些由控制电路写入至少一个存储器设备,以便该至少一个易失性存储器的内容可以从存储在该至少一个存储器设备中的一个或多个数据结构中的至少一些数据中再生。7.如权利要求6的设备,其中数据结构中的一个包括一个转换表,用来将连续数据块的逻辑块地址映射到各自的物理地址,并标记其中的哪个数据块当前正在参加一个开放事务。8.如权利要求7的设备,其中数据结构中的一个包括一个辅助转换表,用来对于每个各自的开放数据事务,将与一个开放事务相关的逻辑块地址映射到数据事务开始之前存在的连续数据块的各自的物理地址,并映射到该开放数据事务的一个标识。9.如权利要求7的设备,其中控制电路将各自的逻辑块地址写入连续数据块。10.如权利要求7的设备,其中控制电路将数据事务的标识写入连续数据块。11.如权利要求7的设备,其中控制电路将数据事务的状态的记录器的标识写入连续数据块。12.如权利要求6的设备,其中数据结构中的一个包括一个映射连续数据块中的每一个的可用性的分配位图。13.如权利要求6的设备,其中数据结构中的一个包括一个连续数据块中的下一个可用数据块的位置的指针值。14.如权利要求6的设备,其中数据结构中的一个包括连续数据块中的第一可用数据块的位置的指针值。15.如权利要求6的设备,其中至少一个存储器设备包括有一个磁头的磁盘,并且其中控制电路在磁头以单方向在磁盘表明上的一系列扫描中,将数据块写入磁盘。16.如权利要求15的设备,其中一系列扫描中的每一个有一个检验点数量,并且其中数据结构中的一个包括指示了当前检验点数量的值。17.如权利要求15的设备,其中数据结构中的一个包括一个工作分配位图,用来在磁头的一个或多个扫描完成时,存储连续数据块中的每一个的可用性。18.如权利要求15的设备,其中控制电路在磁头的一个或多个扫描完成时,将一个或多个数据结构中的至少一些数据写入至少一个存储器设备。19.如权利要求6的设备,其中数据结构中的一个包括一个用来存储数据事务中的至少一个记录的事务状态日志,其中至少一个记录包括数据事务的标识以及参加该数据事务的至少一个存储器设备的标识,并且其中至少一个记录包括由下列内容组成的一组记录中的至少一个开始事务、提交事务以及终止事务,它们分别记录事务已经开始、已经被提交和已经终止。20.如权利要求1的设备,其中控制电路将一个尾部写入连续数据块,该尾部包括指示了每个数据块的使用的一个或多个数据域。21.如权利要求20的设备,其中一个或多个数据域包括数据事务的标识以及数据事务记录器的标识,其中数据事务的记录器包括至少一个存储器设备中的一个。22.如权利要求20的设备,其中一个或多个数据域包括数据块的一个逻辑地址。23.如权利要求20的设备,其中一个或多个数据域包括指示了数据事务状态的标记。24.如权利要求1的设备,包括控制至少一个存储器设备的磁盘控制器,其中磁盘控制器能够从由控制电路写入至少一个存储器设备的数据中恢复一个易失性存储器的内容。25.如权利要求1的设备,其中至少一个参数包括多个参数。26.如权利要求1的设备,其中数据事务包括多个并发数据事务。27.如权利要求1的设备,其中至少一个存储器设备包括由一个服务器管理的磁盘。28.如权利要求1的设备,其中至少一个存储器设备包括多个存储器设备。29.如权利要求1的设备,其中至少一个参数包括记录数据事务的一个或多个状态的事务状态日志。30.如权利要求1的设备,其中至少一个参数包括记录数据事务的一个或多个状态的分布式事务状态日志的至少一部分。31.如权利要求1的设备,其中至少一个存储器设备被改为移动的,以便由其它控制电路操作以恢复存储在至少一个存储器设备上的信息。32.一种用来执行一个数据事务的方法,包括在至少一个存储器设备中接收作为连续数据块的数据、至少一些数据块中的每一个以及指示了在连续数据块中一个后来数据块的物理位置的至少一个参数;以及响应于至少一个参数,转换至少一个存储器设备中的数据的状态,以完成该数据事务。33.如权利要求32的方法,其中至少一个参数包括多个参数。34.如权利要求32的方法,其中在至少一个存储器设备中接收数据包括通过一个数据传输网络将数据传送到至少一个存储器设备。35.如权利要求34的方法,其中传送数据包括将至少一个存储器设备连接到数据传输网络。36.如权利要求34的方法,其中传送数据包括通过控制电路将至少一个存储器设备连接到数据传输网络;以及将控制电路连接到数据传输网络。37.如权利要求32的方法,其中接收数据包括从客户接收数据。38.如权利要求32的方法,包括在至少一个易失性存储器中存储含有指示了至少一些数据块的一个或多个特性的数据的一个或多个数据结构,并将数据结构中的至少一些数据写入至少一个存储器设备,以便至少一个易失性存储器中的内容可以从存储在至少一个存储器设备中的一个或多个数据结构中的至少一些数据中再生。39.如权利要求38的方法,其中存储一个或多个数据结构包括存储一个转换表,用来将连续数据块的逻辑块地址映射到各自的物理地址,并标记其中的哪个数据块当前正在参加一个开放数据事务。40.如权利要求39的方法,其中存储一个或多个数据结构包括存储一个辅助转换表,用来对于每个各自的开放数据事务,将与该开放数据事务相关的逻辑块地址映射到在该数据事务开始之前存在的连续数据块的各自的物理地址,并映射到该开放数据事务的标识。41.如权利要求39的方法,其中接收数据包括将各自的逻辑地址写入连续数据块。42.如权利要求39的方法,包括使用转换表定位一个特定数据块,以从该特定数据块中读取数据。43.如权利要求38的方法,其中存储一个或多个数据结构包括存储一个指示了连续数据块中的每一个的可用性的分配位图。44.如权利要求38的方法,其中将至少一些数据写入至少一个存储器设备包括使用下列步骤将数据写入连续数据块中的一个扫描一个或多个数据结构以确定至少一个存储器设备中的一个可用数据块的物理地址;将数据和一个或多个数据结构的至少一些内容写入物理位置;以及响应于该被确定的物理位置,更新一个或多个数据结构。45.如权利要求44的方法,其中扫描一个或多个数据结构包括检查一个逻辑块地址是否包含在一个开放事务中。46.如权利要求44的方法,其中写入数据和一个或多个数据结构中的至少一些内容包括步骤写入对应于一个软写操作的值;以及写入作为一个事务状态记录器的至少一个存储器设备中的一个的标识,以执行一个临时写操作。47.如权利要求44的方法,其中写入数据和一个或多个数据结构中的至少一些内容包括写入对应于一个开始操作的值,并且其中更新一个或多个数据结构包括写入一个包括事务标识和至少一个存储器设备的标识的开始记录,以执行该开始操作。48.如权利要求44的方法,其中写入数据和一个或多个数据结构中的至少一些内容包括写入对应于一个提交操作的值,并且其中更新一个或多个数据结构包括清除指示了事务的开放状态的标记;写入一个包括事务标识和至少一个存储器设备的标识的提交记录,以执行该提交操作;以及更新一个事务状态日志。49.如权利要求44的方法,其中写入数据和一个或多个数据结构中的至少一些内容包括写入对应于一个终止操作的值,并且其中更新一个或多个数据结构包括清除指示了事务的开放状态的标记;写入包括事务标识和至少一个存储器设备标识的终止记录,以执行该终止操作;以及更新一个事务状态日志。50.如权利要求38的方法,包括扫描一个或多个数据结构以确定数据事务的状态。51.如权利要求38的方法,包括执行一个包括下列步骤的检验点操作锁住一个或多个数据结构;将一个或多个数据结构的内容写入至少一个存储器设备的检验点位置;以及响应于将内容写入至少一个存储器设备,而改变一个或多个数据结构的至少一些内容。52.如权利要求51的方法,包括执行一个包括下列步骤的恢复操作从至少一个存储器设备中读取一个或多个数据结构的内容;以及响应于上述内容,而更新至少一个易失性存储器中的一个或多个数据结构。53.如权利要求52的方法,其中执行恢复操作包括读取自从执行检验点操作以来写入的所有一个或多个数据结构的内容。54.如权利要求52的方法,其中执行恢复操作包括读取自从执行检验点操作以来写入的所有一个或多个数据结构的内容,所用时间基本上不大于写入自从执行检验点操作以来写入的所有一个或多个数据结构所花费的时间。55.如权利要求52的方法,其中执行恢复操作包括确定一个开放事务的状态并使得开放事务的一个或多个客户能够查询该状态并确定是否提交或终止该开放事务。56.如权利要求38的方法,包括执行包括下列步骤的事务协调操作选择至少一个存储器设备中的一个作为数据事务状态的记录器;将一个开始事务操作提交给记录器;为一个来自于至少一个存储器设备的指示了数据事务状态的响应,而等待一个预定时间;基于该响应,将一个或多个软写操作提交给至少一个存储器设备;以及基于该响应,确定是否通过发布一个提交或终止事务操作来提交或终止该事务。57.如权利要求38的方法,包括执行包括下列步骤的事务完成操作从含有指示了数据事务状态的内容的至少一个存储器设备中读取连续数据块的第一组;以及响应于该连续数据块的第一组的内容,将连续数据块的第二组写入至少一个存储器设备并将一组一个或多个数据结构存储到至少一个易失性存储器。58.如权利要求32的方法,其中数据事务包括多个并发数据事务。59.如权利要求32的方法,其中至少一个存储器设备包括由一个服务器管理的磁盘。60.如权利要求32的方法,其中至少一个存储器设备包括多个存储器设备。61.用于电子数据存储的设备包括一个存储器设备,用来接收连续数据块以存储到其中各自的物理地址;以及控制电路,被配置当写入存储器设备时,将连续数据块与至少一些数据块以及指示了连续数据块中后来数据块的物理地址的一个或多个参数写入存储器设备。62.如权利要求61的设备,其中一个或多个参数包括多个参数。63.一种用于电子数据存储的方法包括提供连续数据块以存储到一个存储器设备的各自物理地址;为连续数据块中的至少一些数据块中的每一个确定指示了连续数据块中后来数据块的物理位置的一个或多个参数;以及在存储器设备中存储连续数据块以及一个或多个参数。64.如权利要求63的方法,其中一个或多个参数包括多个参数。65.用于执行数据事务的一种计算机软件产品,包括有其中记录了程序指令的计算机可读介质,这些指令在被计算机读取时,会引起计算机在至少一个存储器设备中接收作为连续数据块的数据、至少一些数据块的每一个以及指示了在连续数据块中后来数据块的物理位置的至少一个参数,并响应于该至少一个参数,而转换在至少一个存储器设备中的数据状态,以完成该数据事务。66.用于电子数据存储的一种计算机软件产品,包括有其中记录了程序指令的计算机可读介质,这些指令在被计算机读取时,会引起计算机提供连续数据块以存储到存储器设备中各自的物理位置,并为连续数据块中的至少一些数据块中的每一个确定指示了在连续数据块中后来数据块的物理位置的一个或多个参数,并将连续数据块和一个或多个参数存储到存储器设备。全文摘要用来执行数据事务的设备,包括至少一个存储器设备,用来接收作为连续数据块的数据以存储到其中各自的物理位置,还包括控制电路。该控制电路被配置当写入至少一个存储器设备时,将连续数据块、至少一些数据块和指示了数据事务标识的参数、事务状态记录器的标识以及连续数据块中后来数据块的位置一起传送到至少一个存储器设备。该控制电路还被配置来利用一些指示参数,转换数据状态以完成(提交或终止)数据事务。在事务完成(提交或终止)之前设备故障的情况下,设备促使利用存储在数据块中的数据完成恢复。文档编号G06F13/00GK1365056SQ0112581公开日2002年8月21日申请日期2001年8月29日优先权日2000年8月30日发明者J·萨特兰,I·戈德,D·舍恩瓦德申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1