如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
第七章容错与实时系统属性:可用性可靠性保险性可信任性完整性可维护性容错与实时系统是分布式系统的两大领域.一般而言,容错服务是允许系统出错的,但它可以在故障后恢复,而不丢失数据。大多数容错应用有两种形式,一种叫做基于事务的容错;二种叫做进程控制的容错,二者的主要区别在于恢复时间。容错具有两个方面,一是故障特征的描述,二是故障屏蔽,故障屏蔽的方法有层次式屏蔽和成组屏蔽两种.本章中将讨论相关设计中的主要问题包括协议、调度策略和设计依据等。7.1事务的故障模型利用事务处理服务的概念起源于数据库管理,最初的目的是提供原子性协议,用于处理消息的丢失。原子提交协议接受这样一个模型:机器在故障时,将不能做任何事情;而在故障前均能正确地做任何事。对于事务的处理,要考虑磁盘出错,服务器故障及通信不畅等出错问题,这样便需要一个故障模型,在该模型中,事务处理算法可以在可预测的故障下正常工作(含利用恢复技术),但不保证在出现不可预测的灾难性故障下也能恢复正常工作。故障模型描述如下:1.写永久存储器时可能出错,可能未写人,也可能写错例如在出现灾难性故障.2.服务器随时可能出现故障。3.消息传递延迟可能是无限制的。消息可能丢失、重复或受损。接收消息的服务器应该能够检测消息损坏情况。所有出错或未检测出的受损消息都会引起严重故障。以上故障模型的特点有:(1)原子提交协议不能保证在有限的时间内完成,因为通信消息的延迟可能无限大;(2)分布式事务的恢复时间可能要比预料的时间长;(3)原子提交协议认为,服务器总能正确执行并能检测故障;(4)原子提交协议认为,永久性存储器上的受损消息和出错数据是可检测的。以上故障模型是设计稳定存储器的基础,稳定存储器要在写操作出现故障时、或在进程故障时提供原子写操作。通信故障可以通过可靠的RPC协议缓解。下面先讨论稳定存储器,尔后更详尽地讨论容错概念与技术。7.2稳定存储服务器(特别是文件服务器)的重要特性就在于其可恢复性,特别是文件映射表和文件索引的恢复。文件访问一般有这样几种出错情况:读块时出错、写块时出错、数据传输时出错及存储介质本身出错。因此,需要一种检测错误的方法,一般采用计算并记录校验和的方法来解决,这一方法步骤如下:(1)写块时,计算数据的校验和并记录下来;写块后,一般要读出一次,进行校验和比较,若不同则再写;同样,经过一定次数的重写后,若读出的校验和仍与写入的校验和不同,则记下“坏块”,并向客户机报错,从而保证写时的正确性。(2)读块时,计算读出数据的校验和并与原记录的校验和比较,若不同,则重新读块。经过一定次数的重读后,若校验和仍然不同,则向客户机报错。这样,保证避免产生读块时的错误。上述方法叫做精心块传输(CBT,CarefulBlockTransfer)方法,但是这种方法并不保证其可恢复性,因为若在写索引时出现错误,则所有文件块均将访问不到,如果在写文件映射表时出错,则无法再访问文件。针对这两种情况,文件映射表和文件索引一般要备份存储,当系统出现故障后,读操作发现校验和不一致时,则服务器可利用备份进行恢复。这种备份一般采用两种存储结构,以减少两备份同时出现错误的可能性,一种常用的结构就是文件映射表和文件索引。另一种结构用一个柱面映射表完成文件页到物理块的映射,柱面映射表的每一行由<分配状态,UFID,索引中的位置,块指针>组成。显然,柱面映射表的大小决定于磁盘的柱面数。以上措施都假设在存储器可能出错的情况下,存储故障对于程序是不透明的,至少程序员认为存储器不是十分可靠的。下面讨论的稳定存储(StableStorage)则是通过一定的手段使程序员感到所使用的存储器是非常可靠的,从而增加存储系统的故障透明性。稳定存储其实是一种在不可靠介质上建立可靠信息存储系统的方法,它可以保证服务器系统可以从硬件或软件故障中得到恢复。稳定存储一般采用冗余备份的方法。由于稳定存储的空间冗余太大,故一般仅用于文件的关键信息,如前述的文件映射表和文件索引等。当然,它也用于对数据安全性要求甚高的应用中,如银行业务等。实现稳定存储的主要原则有以下三个:1)一般用两个相距较远的磁盘块形成一个稳定存储块,尽可能减少发生两块同时出错的可能性;2)要同时保持以下不变性:①至少有一个块是好块;②若两块都是好块,则内容应当一致,若在操作过程中,可以有暂时的不同。3)稳定块指针由两个正常的块指针提供.7.3容错7.3.1基本概念一、部件故障故障通常可分为暂时性、间歇性和永久性故障.暂时性故障只发生一次,如果重复操作,故障可能不会再现。一只鸟在穿过微波波束时会引起无线网络上的信息丢失,这就是暂时性故障,如果下一步重传,它可能正常工作。间歇性故障发生后消失,过一