论文部分内容阅读
随着分布式系统与网络技术的不断发展,分布式存储系统在存储容量、性能、可扩展性等方面已取得了飞速进步,但同时在容错性方面也面临着巨大的挑战:现代的分布式存储系统往往由成百上千个存储节点组成,多个节点出现故障的可能性大大增加,因节点故障导致数据丢失会造成灾难性的后果。因此,如何设计高效、可靠的容错机制,已经是分布式存储系统中迫切需要解决的问题。纠错码是通信领域中广泛采用的检测和纠正通信误差、提高信息传输可靠性的技术。而组通信服务是分布式系统中构建自治区域的重要方法,可保证系统在局部故障的情况下仍能稳定正常地运行。目前,组通信服务是分布式系统中实现容错的一项关键技术。基于纠错码的容错机制将纠错码技术与组通信服务相结合,提出了基于纠错码的容错组,解决分布式存储系统中的容错问题。容错组是实现纠错码的存储节点集合,数据经过纠错码编码后保存在容错组相应的存储节点中。容错组中的存储节点利用组通信服务组织在一起,并通过协调合作提供高可用与高可靠的数据服务。出现节点故障时,可以利用容错组中其它节点保存的数据恢复出原始数据。容错组利用组视图记录当前组中成员列表,组中存储节点加入、退出、故障都将引起组视图的更新。为了方便数据的读/写与管理,容错组中引入了基于对象存储技术。系统运行时,容错组中的存储节点与元数据服务器、管理服务器进行消息通信,更新元数据服务器与管理服务器保存的容错组信息。采取纠错码作为冗余策略的容错组需要减少计算校验数据带来的计算开销,并保证容错组中各存储节点数据一致。设计了容错组中基于组视图的I/O操作,包括读操作、写操作与更新操作。容错组中每一个存储节点都可以完成存储控制器的功能,客户端将I/O请求发送给任意存储节点,存储节点作为协调者再访问组中节点,完成请求。容错组的纠错码都采用系统码形式,编码后的数据块分为信息数据与校验数据。读操作中协调者可以直接访问保存信息数据的节点,只是节点故障时才需要译码恢复数据。数据第一次写入容错组需要编码,然后将编码后的数据存储到相应的节点中。根据纠错码理论,更新操作并不需要再次对数据进行编码,而是先读取已保存的信息数据,与更新的数据计算异或,再将信息数据与校验数据分别更新。为了保证更新数据的一致性,更新操作还需应用时间戳排序、两阶段提交、日志等技术。为了保证容错组的稳定性与容错组中I/O操作的正确性,容错组需要及时检测出故障节点。设计了容错组中基于服务质量的QB-AFD故障检测器。为了探测出组中的故障节点,容错组的每个成员都要向其它成员发送心跳消息,同时监听来自其它成员的心跳消息。如果存储节点在超时时刻还没有接收到某节点的心跳消息,即开始怀疑该节点。故障检测需要满足速度与精度的要求,因此,QB-AFD故障检测器动态调整预期心跳消息到达时间与安全时间余量,以满足服务质量的评价指标。利用组成员关系服务完成容错组的重构任务,设计了基于两阶段提交的视图更新算法2pc-VUA保证组中存储节点维护一致的全局组视图,并设计了节点加入算法负责在新加入容错组的存储节点中生成与其它成员一致的组视图。