有没有只读的 p2p ubuntu 只读文件系统统

联系方式请留下您的联系方式方便我们沟通确认必填项,请输入正确的QQ号必填项,请输入正确的手机号必填项,请输入正确的邮箱确定亲,要输入内容才能提交哦~感谢您的支持,我们会尽快核实~豆丁微信公众号
君,已阅读到文档的结尾了呢~~
基于p2p的分布式存储系统的应用研究及实现
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
基于p2p的分布式存储系统的应用研究及实现
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='http://www.docin.com/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口赞助商链接
当前位置: >>
基于erasure+code的高可用分布式存储系统的设计与实现
分类号UDC学号罾级!!!!!i!!!垒匠工程硕士学位论文基于Erasure Code的高可用分布式存储系统 的设计与实现硕士生姓名崮堑缝研究方向=i士篡扭厘用撞丕国防科学技术大学研究生院 二oo六年十月 国防科学技术大学研究生院工程硕士学位论文摘要自“9?11”事件之后,数据存储日益受到重视,如何确保数据的安全性成为 人们关注的焦点,这要求具有安全可靠的分布式数据存储系统的出现,它将信息 分散在网络或数个存储节点上,使用户在持续有效且高度可靠的方式下访问信息, 即使系统在节点失效,网络断开,或受到恶意攻击的情况下,仍能有效的提供数据存储服务。分布式散列表技术DHT的引入,使得基于P2P的广域存储系统的研究成为当 今的热点,在研的系统包括:OeeanStore(Berkeley)、CFS(MIT)、 Past(Rice&Mieroso舢、Granary(清华大学)等。但由于实际P2P环境中的异构性,动 态性,不可信任性及易受攻击性,影响了存储系统的可用性。本文在863项目“协 作式应急响应服务与基于漂移的可生存系统研究”的基础上,将erasure code与 DHT结合起来,研究高可用的分布式存储系统的设计与实现,主要工作包括以下方面:1)分析了P2P技术在分布式存储系统研究方面的优势,对分布式存储系统的 研究现状做了总结和归纳,并且研究了P2P技术的相关理论; 2)分析、实现了基于Vandermonde矩阵与基于Cauehy矩阵的erasurecode算法,并对两种算法进行了对比测试,结果表明基于Cauchy矩阵的算法 较之基于Vandermonde矩阵的算法编解码效率分别提高了43%和76%;3)提出一种基于el'asure code技术的高可用分布式存储系统的体系结构,详细设计了系统的各个关键模块:文件编解码模块、分块分发与获取模块、 动态维护模块、其它功能模块,并进行了性能分析; ∞实现了基于el-asure code技术的高可用分布式存储系统原型HHStore。对 系统的性能测试表明,集中式服务器的下载方式在节点数激增时,节点下 载所用的时间也增加非常迅速,其性能下降也非常快,而HHStore在网络规模非常大时,也能保持良好的性能。通过以上工作,本文设计并且实现了高可用的分布式存储系统,该系统能安 全可靠地实现数据的存储与下载,能满足国防等关键部门涉密数据的分布存储要 求,同时能够适应广域网中海量节点的并发下载请求,具有较好的可用性、安全性和易管理性,具有一定的军事及民用价值。主题词:el'aSul'e code,P2P,冗余,高可用性,存储系统,分布式第i页 国防科学技术大学研究生院工程硕士学位论文ABSTRACTAfter the 91 l accident.data stomge becomes more and more critical.It becomes focus how to ensure the security of theadata,which desires the appearance of the safetycanandtrusty distributed storage system.Ituserdistribute dataonthe networkorSeveralnodes and makeobtain the data in the continually-effective and higray trusty way. disconnecting,or suffering hostile attacks,the systemEven诵tll Cannodesfailing,networkdatastill support thestorage service. distributed hash table。it becomeson aAfter tlle introduction of thehot topicnowadays the wide―area storage system based carried out currently includethe peer-to―peer.111e projects beingOceanStore(Berkeley),CFS(MIT),Past(Rice&Microsoft),Granary(Tsinghua)andisSOon.But because ofsuch characters as heterogeneity,dynamic, in the real P2P environment,the availability of the storageondistrust,and vulnerabilitysystemdecreased.Basedtheresearchofthe863project‘'cooperativeemergency―corresponding and drift-based survivable system research’’and combining the erasnre code and DHT.this dissertation studies the design and implementation ofthehighly-available distributed storage system.111e main contributions are as following.Firstly,this dissertation analyses theadvantages of theP2P technology in thedistributed storage system and summarizes the current research actualities.It also studies the relational theory ofP2Ptechnology.implements the erasure code algorithms Cauchy matrix and makeaSecondly,the dissertation analyses and based on the Vandermonde matrix and thecomparisonbetween them.ne43resultshows.compared efficiencytothe algorithm basedononthe Vandermondematrix,the encoding efficiency of the algorithm basedCauchy matrix increases bypercent andondecodingofthat increases by 76 percent.aThirdly,this dissertation proposeshighly-available distributed storage systembasedthe erasure COde andanalysesupin detail the file en―decoding module.blockdis仃ibuting and fetchingfunction module,whichmodule,dynamically maintaining module and the othermakeof the system.And it also analyses the systemperformance.Fourthly,this dissertation implementstheHHStore,theprototypeofthehighly―available distributed storage system basedonthe erasllre code.111e test of thesystem performance shows that the downloading time of theverycentralserverincreasesfast,but therapidly whileperformance drops fast when the number of the nodes increases the HHStore Can keep excellent performance even when the network sizelarge.becomes veryFrom what has been done above,the dissertation designs and implements thehi曲ly?availabledistributed storage system basedonthe DHTand erasurecode.m第ii页 国防科学技术大学研究生院工程硕士学位论文 systemcBn download and store data safely and trustily.And it alsoCallsatisfy thedistributed storage demand of the secrete data in such key departments like army andthe parallel requests from the numerous nodes in wide-area storage system.It has the beRer availability,security and manageable and fits for all kinds ofdata storage.KeyWords:Erasurecode,P2P,Redundancy,Availability,Storage systemDistributed第jii页 国防科学技术大学研究生院工程硕士学位论文表目录表2.1常见的度数和网络的维数……………………………………………………。8 表2.2 finger表的符号与定义网…………………………………………………………9 表3.1算法复杂度对比.表3.2编码时间对比表………………………………………………………………29表3.3解码时间对比表. 表5.1存储文件容量与节点数的关系………………………………………………56第1V页 国防科学技术大学研究生院工程硕士学位论文图目录图2.1 Chord标识环【9】…………………………… 图2.2 JXTA构架n羽………………………………图3.1用两个校验块提供两次容错【241…………. 图3.2编码矩阵等式1【241………………………。一屹博博图3.3编码矩阵等式2㈨…………图3.4 GF(23)上的加法和乘法表【拥…………………………………………………24图3.5查表构造的生成矩阵【拥………………………………………………………25 图3.6生成矩阵变化图【25】……………………………………………………………25图3.7基于Cauchy矩阵的KS编码…………………………………………………25 图4.1系统结构图…………………………………………………………………………………………..32 图4.2插入文件F示意图(m.2,n.2)…………………………………………..34图5.1 JXTA整体结构图………….图5.2节点加入对等网络后的界面…………………………………………………45图5.3JNI实现流程图………………………………………………………………46图5.4存储文件…………………。图5.5分发内容分块时的消息传递过程…………………………………………。51图5.6获取文件……………………. 图5.7获取文件时的消息传递过程………………………………………………….52图5.8导入全局存储表……………. 图5.9登录晁面………………………………………………………………………54 图5.10节点配置……………………。 图5.1 1下载时间与节点数的关系…。第v页 独创性声明本人声明所呈交的学位论文是我本人在导师指导下进行的研究工作及取得的研 究成果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已 经发表和撰写过的研究成果,也不包含为获得国防科学技术大学或其它教育机构的学 位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文 中作了明确的说明并表示谢意。 学位论文题目:基王坠!!!!!£!韭盐直互旦l迫直叁壶篮盘缠盟遮盐生塞理学位论文作者签名::迫暨虚日期:,“年,y月,珀学位论文版权使用授权书本人完全了解国防科学技术大学有关保留、使用学位论文的规定。本人授权国 防科学技术大学可以保留并向国家有关部门或机构送交论文的复印件和电子文档,允 许论文被查阅和借阅;可以将学位论文的全部或部分内容编入有关数据库进行检索, 可以采用影印、缩印或扫描等复制手段保存、汇编学位论文。 (保密学位论文在解密后适用本授权书。)学位论文题目:基土!!!!!!!!!韭的直互周金查盎壶篮丞缠盟遮让皇塞理学位论文作者签名:煎丝缝 作者指导教师签名:塑蛰迅日期:尹6年,p月,归日期:j006年f’月lj日 国防科学技术大学研究生院工程硕士学位论文第一章绪论1.1课题研究背景及来源自“9?11”事件之后,数据存储日益受到重视,我国有关部门规定金融、电 信等八个行业必须建立数据灾难恢复机制,因此银行、保险、电信等行业先后建 立起了灾难恢复机制。而我军作为秘密信息的密集载体,目前部队机关各部门的 资料由各部门保管,没有集中的存储、备份(特别是异地备份)机制,一旦出现 突发事件,部队机关被毁,数据无法恢复,人员,物资,装备情况及各种文书, 方案无从掌握,将大大延长部队应急反应时间。面对可能的台海军事斗争,在部 队信息化日益提高的今天,建立我军各级军事机关的灾难恢复机制显得至关重要。 如何确保数据的可用性、可生存性、完整性和安全性已经成为人们关注的焦点,这要求具有安全可靠的分布式数据存储系统的出现,它将信息分散在网络或数个存储节点上,使用户在持续有效且高度可靠的方式下访问信息,即使系统在 节点失效,网络断开,或受到恶意攻击的情况下,仍能有效的提供数据存储服务。 最近几年,对等计算(Peer-to―Peer,简称P2P)迅速成为计算机界关注的热门话题之一,《财富》杂志更是将P2P列为影响Internet未来的四项科技之一。P2P打破了传统的Client/Server(c/s)模式,在网络中的每个结点的地位都是对等的。 每个结点既充当服务器,为其它结点提供服务,同时也享用其它结点提供的服务。 相比传统的分布式系统,它具有一定的优势,体现在以下几个方面: ?非中心化(Decentralization):网络中的资源和服务分散在所有结点上,信 息的传输和服务的实现都直接在结点之间进行,可以无需中间环节和服务器的介 入,避免了可能的瓶颈。P2P的非中心化基本特点,带来了其在可扩展性、健壮性 等方面的优势。 ?可扩展性:在P2P网络中,随着用户的加入,不仅服务的需求增加了,系 统整体的资源和服务能力也在同步地扩充,始终能较容易地满足用户的需要。整 个体系是全分布的,不存在瓶颈。理论上其可扩展性几乎可以认为是无限的。 ?健壮性:P2P架构天生具有耐攻击、高容错的优点。由于服务是分散在各个 结点之间进行的,部分结点或网络遭到破坏对其它部分的影响很小。P2P网络一般 在部分结点失效时能够自动调整整体拓扑,保持其它结点的连通性。P2P网络通常 都是以自组织的方式建立起来的,并允许结点自由地加入和离开。P2P网络还能够根据网络带宽、结点数、负载等变化不断地做自适应式的调整。?高性能/价格比:性能优势是P2P被广泛关注的一个重要原因。随着硬件技 术的发展,个人计算机的计算和存储能力以及网络带宽等性能依照摩尔定理高速第l页 国防科学技术大学研究生院工程硕士学位论文增长。采用P2P架构可以有效地利用互联网中散布的大量普通结点,将计算任务 或存储资料分布到所有结点上。利用其中闲置的计算能力或存储空问,达到高性 能计算和海量存储的目的。通过利用网络中的大量空闲资源,可以用更低的成本提供更高的计算和存储能力。?隐私保护:在P2P网络中,由于信息的传输分散在各节点之间进行而无需 经过某个集中环节,用户的隐私信息被窃听和泄漏的可能性大大缩小。此外,目 前解决Intemet隐私问题主要采用中继转发的技术方法,从而将通信的参与者隐藏 在众多的网络实体之中。在传统的一些匿名通信系统中,实现这一机制依赖于某 些中继服务器节点。而在P2P中,所有参与者都可以提供中继转发的功能,因而 大大提高了匿名通讯的灵活性和可靠性,能够为用户提供更好的隐私保护。 ?负载均衡:P2P网络环境下由于每个节点既是服务器又是客户机,减少了 对传统C/S结构服务器计算能力、存储能力的要求,同时因为资源分布在多个节点,更好的实现了整个网络的负载均衡。冗余是分布式存储的核心,适当的冗余能提高数据的有效性,保密性和可生 存性,相比以前简单的数据完全复制(镜像)或数据分割(RAID),erasure 低了对网络带宽和存储容量的占用【11。 本课题的前期研究是在国家“863”项目“协作式应急响应服务与基于漂移的 可生存系统研究”(项目编号:2003AAl42080)的支持下进行的,并且通过几个 月的研究实践,基于LINUX系统NFS V2文件系统,已经初步建立了一个系统原 型。该原型系统实现了在局域网内四个节点间的分布存储功能,仍存在以下几方面需要解决的问题:code增强了数据的有效性和保密性,被广泛应用到计算机网络安全存储中,并大大降≯信息分布算法效率不高,无法扩展到节点更多的情况下; ≯系统不易扩展和移植。系统对应特定需求环境设计,由于借助NFS(网络 文件系统)实现,每个节点既是服务器(server),又是客户端(client), 当节点较多时,节点负载会很大,无法有效扩展。也因为同一个原因,此系统无法移植到别的操作系统应用;≯未建立有效的节点恢复机制;≯安全方面考虑较少,不能检测分割的数据是否被篡改;由于NFS V2缺乏 必要的用户验证与控制机制,易被冒充访问;本文在此基础上,设计并实现了一个基于P2P技术和erasure code技术高可用 的分布式存储系统,解决了存在的问题,实现了数据在广域网上的高可用分布式存储。第2页 国防科学技术大学研究生院工程硕士学位论文1.2高可用的分布式存储系统的研究现状高可用的分布式存储系统的研究目前主要集中在广域存储系统方面。广域存 储系统【21是近年来在存储系统研究方向兴起的一个新兴研究领域。广域存储系统试 图在全球范围内建立超大规模的网络存储系统,实现存储的可靠、可用、高性能、 易访问等特性,向用户提供单一系统映像,成为下一代存储系统框架。 广域存储系统当前还处于研究兴起阶段,没有实际商业化产品,主要的在研项目包括OeeanStore(Berkeley)例、CFS(MIT)14J、Past(Rice&Microsoft)o”、Granary(清华大学)【61等。 OceanStorc是最早提出广域存储系统的,系统功能比较全面,OceanStore希望 在系统中融入各种规模、能力的结点,构造出超大规模的存储系统,并保证数据 的强一致性,也就是说,在多用户并发访问并且系统中存在恶意结点时仍保证数 据的线性一致性。但是,这种系统过于复杂,在当前的网络能力和结点状况下还 难以实现‘刀,因此后续的P2P存储服务系统不再提供强一致性语义,一般只保证 单用户数据读写的正确性,并且暂不讨论如何防止恶意结点对数据一致性带来的破坏。这样的系统主要包括:CFS,PAST,Granary等。CFS(Cooperative FileSystem)是一种基于p2p的只读存储系统。它实现了文件存取的安全、高效、健壮及负载平衡。CFS系统的核心包括两层:Dhash和chord。 Dhash为客户从服务器上获取分块,将分块分散到各个服务器上去,并维护缓存和 副本。它利用chord的分布式查找来定位分块所在的服务器。和其它类似系统一样, CFS通过用公钥或对内容的hash来命名,并以此对数据进行验证。它采用虚拟服务器(virtual server)的方法来消除服务器间存储空间的差异,采用限制配额的方法来防止入侵者恶意插入大量无用的数据以耗尽存储空间。用复制及缓存的方法 实现了负载平衡:对大文件实施分块复制,对小文件进行缓存。CFS只将数据保 存一段时间,对过期的数据自动删除。如要对永久保存数据,可定期请求CFS.延长保存期。PAST也是基于p2p,它是一种可扩展的安全的持久的完全自组织的广域存储 系统。它的核心包括pastry和Dhash两层。相比CFS,它有如下特点:(1)采用pastry路由策略:(2)使用智能卡,它有三个作用:一是确保对节点配额的安全有效地控制; 二是确保节点ID和文件ID分配的完整性;三是实现了匿名的中间媒介; (3)使用匿名来增强安全性,利用假名机制(Pseudonymity)实现匿名。Granary是广域对象存储系统。它以对象为存储单位。提供数据高可靠性、高安全性、高访问性能等特性。并提供数据查询和事件驱动。它采用用户加密和系第3页 国防科学技术大学研究生院工程硕士学位论文统加密双重安全措施,保证关键数据即使对于系统也不可见,提供了最高的安全性。它以overlay network(Pastry)和DHT(分布式散列表)为底层协议进行数据的存放与定位,保证存在的数据总可以以低于109N步被访问到。它通过数据的 复制提高可靠性和访问效率,并通过概率复制算法保证复本之间的一致性。它提 供数据查询功能,提供较强的查询语义,并通过一系列方法提高查询性能。它提 供事件驱动的数据访问方式,简化了数据主动迁移等应用的开发。 上述广域存储系统,功能全面,实现复杂,在数据复制方式上采取文件复制 或数据分块的方式,而没有采用编码的方式,在存储空间及带宽的利用率上还可 以继续提高。因此,本课题将综合比较、利用目前各系统的优点及研究成果,着 重从编码算法入手,设计并实现尽量简单,高效,实用的分布式存储系统。1.3本文主要的研究内容本文主要的研究内容为:1分析了P2P技术在分布式存储系统研究方面的优势,对分布式存储系统的 研究现状做了总结和归纳,并且研究了P2P技术的相关理论;2分析、实现了基于Vandermonde矩阵与基于Cauchy矩阵的erasBrecode算法,并对两种算法进行了对比测试,结果表明基于Cauchy矩阵的算法 较之基于Vandemlonde矩阵的算法编解码效率分别提高了43%和76%;3提出了一种基于erasure code技术的高可用的分布式存储系统体系结构, 详细设计了系统的各个关键模块:文件编解码模块、分块分发与获取模块、 动态维护模块、其它功能模块,并对系统进行了性能分析;4实现了基于erasure code技术的高可用分布式存储系统原型HHStore。对系 统的性能测试表明,集中式服务器的下载方式在节点数激增时,节点下载 所用的时间也增加非常迅速,其性能下降也非常快,而HHStom在网络规 模非常大时,也能保持良好的性能。全文共分六章,各章的组织结构如下: ≯第一章为绪论部分,主要介绍了课题研究的背景、高可用分布式存储系统 的研究现状、本文主要的研究内容和研究成果;>第二章介绍了P2P的相关理论,包括DHT算法、YXTA及XML技术;Cauchy矩阵的erasure code算法的基本原理及实现过程,并对两者的性能≯第三章介绍了erasure code算法,包括基于Vandermonde矩阵和基于进行了对比分析;>第四章提出了一种基于erasure code的高可用分布式存储系统架构,并对 该系统进行了性能分析;第4页 国防科学技术大学研究生院工程硕士学位论文 ≯第五章实现了基于erasure code技术的高可用分布式存储原型系统HHStore,包括各个关键模块的实现,这些关键模块有:文件编解码模块、 分块分发与获取模块、动态维护模块、其它功能模块; >第六章为结束语,总结了本文的工作并对进一步的研究工作进行了展望。1.4研究成果本文主要的研究成果是:设计并实现了基于erasure code技术的高可用分布式 存储系统HHStore,该系统能安全可靠地实现数据的存储与下载,能满足国防等关 键部门涉密数据的分布存储要求,同时能够适应广域网中海量节点的并发下载请 求,具有较好的可用性、安全性和易管理性。另外,分析、实现了基于Vandermonde矩阵与基于Cauchy矩阵的erasul-e code算法,其中编解码效率较高的基于Cauchy 矩阵的el'asure code算法在HHStore系统中得到了应用。最后,以第一作者在2006年网络、通信与信息系统学术会议上发表论文一篇。第5页 国防科学技术大学研究生院工程硕士学位论文第二章P2P技术相关理论为了介绍P2P技术在高可用分布式存储系统中的应用,本章详细介绍了P2P 技术的相关理论。因为DHT算法为P2P系统提供了可扩展的路由模型,提高了 P2P系统消息路由的效率,而JXTA为P2P系统提供了实现的平台,其平台无关性 提供了构建P2P体系结构的基础,其中XML是JXTA的主要消息格式,所以主要 介绍的P2P技术相关理论包括DHT、JXTA和XML。2.1DItT算法概述由于P2P系统的出现,例如Napster、Gnutella和Freenet,促进了对DHT的 研究,其采用分布在Intemet上的资源来提供应用。特别是,它们利用不断增长的带宽和硬盘容量来提供文件共享服务。这些系统的区别在于如何定位它们的节点所包含的数据。Napster拥有一个集 中的索引服务器:每个节点在其加入时将把它拥有的文件列表发送给服务器,该 服务器将负责执行搜索并且发送查询请求给拥有所需文件的节点。这种系统的缺 点是服务器容易受到攻击,并且服务器由于被攻击而失效后系统无法继续运行。 Gnutella和相似的网络使用泛洪查询模型,也就是每个查询将导致消息被广播给所 有在网络中的其它节点。虽然这种系统避免了出现单点失效,但是这种方法在效 率方面比Napster低得多。Freenet也是完全分布式的,但是引入了基于key进行路 由的技术,即每个文件与一个key相关,并且拥有相似key的文件簇聚于一系列相 似的节点上。查询可能只需要被路由到这些节点上,而不需要访问许多节点。然 而,Freenet没有确保可以找到数据。DHT使用一个基于更加结构化的key进行查询的技术,从而既获得Gnutella和Freenet的分布性,又可以获得Napster的效率并且确保能够查找到数据。DHT 的缺点是,如同Freenet一样,只能够直接支持精确匹配的查询,而不支持关键字查询。最初的四种DHT算法是CANl81、Chordl91、Pastrytlo】和Tapestrytl”。DHT是一种简化大规模分布应用的方法。DHT将数据的多个块存储在Interact 上分布的一系列节点上。每一块通过一个唯一的key来标识。这些DHT的目标是 将存储和提供数据的负载均匀地分布到所有节点上,达到负载均衡,并且当节点加入和退出系统时保持数据的可用性。2.1.1DHT的基本原理DHT的基本原理是:DHT为每个节点指定一个标识符(ID),给数据也指定 一个标识符(key),将对数据的key的拥有权进行划分,并且地分布到系统中的 国防科学技术大学研究生院工程硕士学位论文各个节点上,各个节点所负责的数据key与本身的ID非常接近,每个节点也只需 维护少数几个其它节点的信息,从而根据以上原则,能够有效地将消息路由到任何给定key的拥有者。DHT非常适合于有大量节点加入和退出的情况,并且被广泛地应用于分布式文件系统、P2P文件共享系统、协作式web caching、多播和域名服务等领域。另外,DHT提供了简化的统一应用接口,可以作为许多大规模分布式应用的底层结 构,应用程序可以通过使用DHT来获得负载均衡、可扩展性等性能。2.1.2DHT的特点1分布化:节点在网络中既充当客户端的角色,也充当服务器的角色,而且 所有节点之间的通信无需经过服务器等中心设备进行。 可扩展性:即使是成千上万的节点,系统也能有效地工作。 容错性:即使节点不断地加入、退出和失效,系统也能够继续正常工作。2 3达到这些目标的关键技术是每个节点只需要在网络中维护一部分其它节点的 信息,通常是O(109Ⅳ)个节点的信息,从而当网络发生变化时,每个节点不需要执行很多的工作。 DHT可以处理传统的分布式系统存在的问题,例如负载均衡、数据的完整性以及性能,特别是,确保路由、存储数据或者获取数据等操作能够快速地完成。2.1.3DHT的结构理解DHT的结构需要知道它的两个重要部分:key空间划分机制和覆盖式网 络。key空间划分机制将对key的所有权进行划分并且分布到所有节点上;覆盖式 网络连接所有的节点并且允许节点查询给定key的拥有者。2.1.3.1key空间划分机制大多数DHT算法使用一些不同的一致性散列法(consistent hashing)来将key 与节点进行匹配。该技术引入一个函数,该函数定义了两个key(kl和k2)之间 距离的抽象概念。每个节点被指派一个唯一的key,并且称该key为节点的标识。通过函数计算,ID为i的节点拥有与i最接近的所有的key。例如,Chord算法将key分配给环上的一个节点,而函数的值表示在环上从k1到l(2按顺时针方向传输的距离。所以,圆形的key空间被分成邻近的几段,每段都以节点的id为端点。如果订和i2是两个邻接的ID,则ID为i2的节点拥有所有在i1和i2之间的key。一致性散列法的本质属性是当一个节点加入或者退出时,只需要改变邻近节点所拥有的key的集合,而不需要改变所有其它的节点。第7页 国防科学技术大学研究生院工程硕士学位论文2.13.2覆盖式网络 每个节点维护一组到其它节点的连接,包括它的邻居或者路由表等,从而, 对于任何key,节点或者拥有该key,或者拥有一个连接,该连接指向根据在前面 定义的key空间距离来计算的离该key最近的节点。根据以下的贪婪算法,可以很 容易地将消息路由到任何key的拥有节点:在每一步,将消息转发给ID离key最 近的邻居。这种形式的路由有时被称为基于key的路由。邻居是通过结构化的方 式选择的,称为网络的拓扑,从而在任何路由线路中的跳数(网络的维数)和每 个节点的邻居数(度数)都会比较少。常见的度数和网络维数如表2.1所示。表2.1常见的度数和网络的维数度数 00)DflogN) 0flogN)网络的维数 0(IogN) O(109N/loglogN)DflogN)o(4ff)00)最常见的是第三种选择,虽然它不是最优的,但是这种拓扑结构在邻居的选 择上有更大的灵活性,而且在物理底层网络中产生的延迟也非常低。2.1.4 Chord算法概述2…1 41Chord的主要思想Chord算法为每个节点指定一个id。其id空问可以认为是一个环,在这个环 中最大的id为0。Chord将每个key与一个节点匹配,该节点的id与该key最接 近。每个Chord节点保存一部分其它节点的信息,从而可以有效地将key与节点 匹配并且具有一定的容错性。Chord确保每个节点知道其后继节点的标识信息,包括球地址、Chord id等,并且可以根据id将节点连接成环状的列表。Chord查询协议的标识拓扑结构是如图2.1所示的环。该环所拥有的节点数不 会超过2”,范围从0到2”.1。在该图中,m----3。大的圆点表示节点,小的圆点表 示key。ID和key是通过使用一致性散列法指定的,sHA一1算法是一致性散列法的基本散列函数。其中每个节点有一个后继节点和前置节点。后继节点是指在环 上按顺时针方向的下一个节点。前置节点是指在环上按逆时针方向的下一个节点。 例如,节点l的后继节点是节点3,节点l的前置节点是节点0。第8页 国防科学技术大学研究生院工程硕士学位论文13图2.1 Chord标识环f9】当节点失效时,为了维护系统的完整性,每个节点保持一个后继表。如果节 点的后继节点失效了,该节点将使用后继表中下一个有效的节点来替换失效的节 点。由于使用了finger表,查询所耗费的时间在O(109N)级别,一个节点的finger 表保存了logN个实体。finger表、后继节点和前置节点的定义如表2.2所示。表2.2 finger表的符号与定义【9】符号 finger[k] 后继节点 前置节点定义在标识环上按顺时针方向满足id继(n+2“1)mod 2m之后的第一个节点。在标识环上的下一个节点 在标识环上的前一个节点一个Chord节点周期性地检查它的fmger表和后继表中各项的有效性,该 过程称为stabilization。Chord通过该过程可以适应节点失效和节点加入等动态情 况。Chord也周期性地试图联系过去存活但现在无法联系上的节点;Chord通过这 个过程来知道网络被分割时的时间。2.I.4.2Chord的性能分析Chord简化了P2P系统的设计,其主要性能包括以下几个方面:≯负载均衡:Chord充当了分布式哈希函数,将key均匀地分布在节点上,从而满足一定程度的负载均衡。 》非集中化:Chord是完全分布化的,即所有节点的地位相当。这一点增加了系统的鲁棒性,并且使得Chord适合于组织松散的P2P应用。≯可扩展性:Chord查询的开销为0(109N),其中N为节点的数量,而且不 需要额外的参数,所以甚至是大型的系统也能够正常提供服务,即Chord第9页 国防科学技术大学研究生院工程硕士学位论文的可扩展性很好。 >可用性:Chord自动调整节点内部的表项来反映最新加入的节点以及失效 的节点,并且在底层网络没有发生主要的失效情况下确保可以查找到负责 某个key的节点。即使系统处于连续的变化当中,其可用性也是可以满足的。≯命名的灵活性:Chord对于要查询的key的结构没有任何限制,因为Chord 的key空间是平面的。这一点使得应用对于如何将它们本身的名字映射到 Chord的key具有很大的灵活性。2.1.4.3Chord的主要应用Chord的应用范围比较广泛,主要包括以下几个方面: 协作式镜像:内容的多个提供者通过互相合作来存储和提供各自的数据。例 如,共享的内容可能是一组软件开发项目,并且每个项目都要定期进行升级。将 整个负载均匀地分布在所有共享内容的节点上将降低系统全部的开销,因为每个节点只需要提供达到平均负载的容量,而不需要达到最大负载。分时共享存储:这种应用主要针对节点之间的连接不连续的情况。如果希望 数据一直是可用的,但是服务器只是偶尔可用,它们可以在互相连接时存储其它 服务器的数据,从而其它服务器在它们没有互相连接时会拥有这些服务器的数据。 在任何时间,数据的名字都可以作为key来标识负责存储数据项的Chord节点。 分布式索引:用以支持类似Gnutella或者Napster的关键字搜索。在这种应用 中,可以从需要的关键字中产生key,其值可以是提供包括那些关键字的文档的机器列表。大规模的组合搜索:例如代码破坏(code breaking)。在这种情况下,key是 问题的候选解决方案,例如密钥;Chord将这些key映射到负责将这些key作为解决方案进行测试的机器上。2.2JXTA综述JXTAtl21【13】是Sun在P2P计算领域的重要项目,同时JXTA也是Sun的ONE 互联网战略的延续。JXTA的创始人是Sun首席科学家Bill Joy,JXTA是开放源码 项目,目前最新版本是V2.4,现在已有不少其它研究机构和工业界伙伴参与其中。 JXTA技术是一种网络编程和计算的平台,用以解决现代分布计算尤其是P2P计算中出现的问题,解决目前的P2P计算的局限性。JXTA将建立核心的网络计算技术,提供支持在任何平台、任何地方以及任何时间实现P2P计算的一整套简单、灵活 和有效的机制。JXTA仅提供几乎所有的应用程序都能使用的构件要素,创建基本第lO页 国防科学技术大学研究生院工程硕士学位论文的机制,而不考虑目标用户的策略和特定实现,具体的策略选择等都交给应用的 开发者。JXTA技术可使各软件开发商能够根据统一的要求和统一的标准,在同一 平台开发它们的应用产品。JXTA必将扩展P2P计算,实现分布计算的大量新应用, 克服目前存在于许多P2P应用中的众多限制。2.2.1 JXTA的技术特点1)互操作性:现在的大多数P2P系统用来实现一个单一类型的网络服务,例 如Napster只提供音乐文件交换服务,Gnutella只提供一般的文件交换服务, 由于缺乏一个通用的P2P基础平台,这些P2P系统难以互相交互,从而局 限了P2P系统的潜力的发挥。如果一个对等体参与了多个P2P系统,该对 等体必须支持多种P2P系统的实现。JXTA技术目的是改变这种困境,使 得物理上互连的但属于不同P2P系统或团体的对等体能够互相定位、通信、 协同以及为对方提供服务,使得不同的P2P系统之间能够无缝地进行互操作。2)平台独立:JXTA技术是平台独立的。JXTA独立于编程语言(如C,Java 等),独立于操作系统平台(如Windows或UNIX等),独立于网络平台 (如TCP/IP,蓝牙技术等)。任何人都可以在任何硬件平台上,用任何操 作系统、任何编程语言实现基于JXTA的网络。3)无处不在:.IXTA能运行在任何拥有数字心脏的设备上,包括传感器、消费电子产品、PDA设备、网络路由器、桌面电脑、服务器和存储设备。 4)核心处使用XML:JXTA目前使用XML作为消息和广告的格式,这对于 使JXTA具有互操作性很有帮助。因为XML技术的简单性和普遍可访问性,软件几乎可以创建在任何平台上以生成并解析JXTA消息。2.2.2JXTA构架JXTA的架构如图2.2所示。TXTA构架分为三层:.PxTA核心层(JXTACore)、JXTA服务层(TXTA Services)和JXTA应用层(JXTA Applications)。第11页 国防科学技术大学研究生院工程硕士学位论文蛔呻 稿墓{| 艘激se图2.2 JXTA构架…JXTA核心层处理对等体的建立、通信管理(如路由等)以及对等体的监测等。 JXTA服务层提供更高层的一些基本服务,如索引、搜索、文件共享等。JXTA服 务层的这些服务使用JXTA核心层提供的各种功能,可以被本层的服务所使用, 也可以作为整个P2P系统中的一个通用组件。JXTA应用层是一些P2P应用,如 Email、P2P存储系统等,JXTA shell是JXTA开发包的一个缺省应用。JXTA的每 一层都是简单而有效的,能够为应用的开发提供基本的支持。2.2.3JXlA核心概念在JXTA中,有一些基本的概念:对等体、对等组、标识、通告、消息、管 道。下面将首先对这些概念进行解释。 夺对等体:对等体是可以理解实施协议的实体。对等体是组成P2P网络的基本元素。夺对等组:对等组是指协作提供某一种服务的对等体的集合。对等组成员资 格没有任何限制,任何对等体有必要属于几个对等组,就可以属于几个对 等组。JXTA规范并没有规定或推荐对等组创建、组织的时机和方式, JXTA只是定义了对等体发现协议。在JXTA网络中,对等组就是共享资 源和服务的对等体的集合。有一个缺省的特殊对等组,称为全体对等组,它包含了所有的JXTA对等体。夺标识:JXTA使用128位的UUID来指向任一个实体(对等体、通告或服务等)。 夺管道:管道是发送和接收消息的通道。管道是异步的、单向的。要双向通信的两个对等体需要创建两个独立的管道。管道也是虚拟的,管道的一端 可以连接到多个对等体上。管道通常是通过管道绑定协议(Pire第12页Binding 国防科学技术大学研究生院工程硕士学位论文Protoc01)在运行时连接到一个对等体上。目前JXTA规范提供了两种类 型的管道:点对点管道和多播管道。对等体可以使用点对点管道连接到另 一个对等体并单向传输消息。对等体可以使用多播管道连接到一个或多个 其它对等体并向它们全体传输消息。点对点管道是一对~的消息传输机 制,多播管道则是一对多的消息传输机制。JXTA项目组目前正在在多对 多消息传输机制(即JXTA Wire)方面努力。 夺消息:JXTA消息是指通过管道从一个对等体传送到另一个对等体的信息 块。消息是在异步、不可靠、单向的信道上传输。消息包含了一个信封和 消息体。信封是标准格式,它包括报头、源端点信息(URI格式)、目 的地端点信息(uIu格式)以及可选的消息摘要(为了安全性目的)。 消息正文包含了可选的身份验证信息(以增加安全性)和内容,消息正文 的长度是任意的。YXTA这种消息格式的目的是为了适应各种不同的网络 (从TCP/IP网络到蓝牙网络等),支持多种传输标准。JXTA消息编码 目前采用XML文档格式,利用了XML的普适访问性和易使用、易编 程的特点,使得JXTA可以用大多数编程语言在大多数平台上很容易地 实现。但JXTA规范本身并不要求JXTA消息编码一定要使用XML。 夺通告:通告的内容用来命名、描述和发布现有的资源,如对等体、对等组、 管道或服务等。JXTA通告也采用XML文档格式。JXTA定义通告的基 本集合。例如可以访问一个对等组的通告的对等体可以通过通告加入对等 组。YXTA规范没有规定如何创建、传播或删除通告。2.2.4JXTA协议抽象的看,JXTA技术实际上就是一些协议。JXTA技术中目前定义了六大协 议,所有这些协议都是建立在XML消息交换的基础上的,它们可以用几乎所有 的编程语言在几乎所有平台上实现。这些协议都可以很容易的实现并集成到P2P服务和应用中,这样不同的P2P系统之间可以方便的实现互通、互操作。JXTA主 要包括以下协议【141: >对等节点发现协议(PeerDiscovery Protoc01)≯对等节点解析协议(Peer Resolver Protoc01)》对等节点信息协议(PeerInfonnation Protoc01)≯对等节点成员关系协议(Peer Membership Protoc01) >管道绑定协议(PipeBinding Protoc01)≯端点路由协议(Endpoint Routing Protoc01)第13页 国防科学技术大学研究生院工程硕士学位论文2.3XML简介2.3.1 XML的定义XMLll 5J是可扩展标志语言(eXtemible Markup Language)的简称。象HTML一样,XML是从所有标志语言的元语一一标准通用标志语言SGML(StandardGeneralizedMarkup Language)]]lj里派生出来的,是一套定义语义标记的规则,这些标记将文档分成许多部件并对其加以标识。XML是与特定领域有关的、具有语义 和结构化等特点的元标记语言。我们可以用XML来定义种种不同的标志语言满足 不同的需要,特别在数据表现方面。 简而言之,可以称XML为“表达数据中结构的共同语法”,而所谓的结构化 的数据指的是其内容、意义或应用被标记的数据。进一步讲,XML是在互联网时 代与Java、CORBA类似的一个概念。Java解决了语言实施的同一,CORBA解决 了通讯协议的同一,XML则解决了信息表示、关联的同一。2.3.2XML的特点及其应用数据与其表现的分离是XML最重要的特点,XML以其良好的数据存储格式、 可扩展性、高度结构化、便于网络传输等优势将在许多领域一展身手,这些优势 不仅能满足不断增长的网络应用需求,而且还能够确保在通过网络进行交互合作时,具有良好的可靠性与互操作性。基于上面论述的,可以看出XML具备的特点包括以下几个方面: 》易于扩展:XML是摒弃了SGML中一些复杂性并考虑到适合web特性的 一个子集。可以定义其它语言,同时XML的标记是用户定义的,所以从 理论上讲,其类型的数量可以是无限的; ≯结构性强:XML的文件结构嵌套可以复杂到任意程度,能表示面向对象的等级层次;≯交互性好:用户与应用进行交互时,使用XML可以非常方便地进行数据 操作,不需要与服务器进行交互,减轻了服务器的负担; ≯语义性强:XML能够表达丰富的语义,并且以直观的方式显示出来。 XML的实际应用非常广泛,主要包括以下几个方面【161:存储数据库,结构化 文档,存储矢量图形,描述软件包及其依赖的软件,We b应用程序之间的通信, 交换金融信息等。2.3.3XML与JXTA的关系第14页 国防科学技术大学研究生院工程硕士学位论文因为XML是结构化数据跨平台表示的一种事实上的标准,所以JXTA的协议 技术规范是根据XML数据结构来定义JXTA消息的。但是,JXTA并不要求一个 对等节点具有处理XML结构数据的所有功能。例如,包含有限资源的对等节点可 能会选择将JXTA的消息交换协议预编译为一种二进制的表示形式。只要该对等 节点处理的消息遵循这个协议规范,那么该对等节点就能在不需处理XML结构数据的情况下加入到Jx,rA网络中。尽管JXTA技术规范目前定义了7种协议,但是,为了成为JXTA虚拟网络的 一部分,一个对等节点并不需要理解所有这7种协议。实际上,虽然这些协议定 义了一个对等节点的行为方式,但只有当该对等节点确定要实现该协议定义的行 为时,这些协议才能产生对该对等节点的影响。当然,一个对等节点支持的协议 越多,那么该对等节点参与JXTA网络的行为就越充分。此外,一个对等节点也 可以通过耨的行为来扩展任何现有的协议。 在JXTA技术的7种协议中,对等节点解析协议的XML模式如下所示:<xs:elementname=”ResolverQucry”type=’'jxta:ResolverQuery”,> name=’’ResolverQuery”><xs:eomplexType <xs:sequence> <xs:elementref----‘'jxta:Cred”nlinOceurs=”0”6, <xs:element name=”SrePeerlD”type2。'jxta:JXTAID”胁<!一This could be extended wimapa:tcemrestriction??><xs:element l-lame=’’HandlerName”type=”xs:string”/> <xs:elementllame=”QuerylD”type=”xs:string”/),reasons<xs:element name=”HC’’type=”xs:unsignedInt。’胁 <!一For historical <xs:element </xs:sequence> </xs:eomplexType> the query isawhole flattened document一―>name=”Query”type=”xs:anyType”胁2.4本章小结本章详细介绍了P2P技术的相关理论,其中分析了DHT算法的基本原理、特 点和结构,以及Chord的主要思想、性能分析和主要应用,给出了JXTA技术的 相关概念,最后介绍了XML协议的相关知识。第15页 国防科学技术大学研究生院工程硕士学位论文第三章erasure code算法分析与实现由于gl'aSLEe code算法是我们设计和实现高可用分布式存储系统的基础,因此,本章我们详细介绍了基于Vandermonde矩阵和基于Cauchy矩阵的两种erasure code算法的基本原理及代码实现,并进行了对比性能测试。由于基于Cauchy矩阵的erasure code算法较好的编解码效率,该算法在后述的高可用分布式存储系统中 得到了应用。3.1erasurecode概述编码理论与技术研究至今已有40多年的历史了,在香农编码定理的指导下, 信道编码(亦称纠错码)理论和技术逐步发展成熟。早在20世纪50年代初,汉明(R.W.Hamming)提出了重要的线性分组码一汉明码后,人们把代数方法引入到纠错码的研究,形成了代数编码理论。1957年普兰奇(Prange)提出了循环码, 在随后的十多年里,纠错码理论研究主要是围绕着循环码进行的,取得了许多重要结果。由于循环码具有性能优良、编译码简单、易于实现等特点,因此,目前在实际差错控制系统中所使用的线性分组码几乎都是循环码。1959年由霍昆格姆 (Hocquenghem)、1960年由博斯(Bose)和查德胡里(Chaudhari)各自分别提 出了BCH码,这是一种可纠正多个随机错误的码,使迄今为止所发现的最好的线 性分组码之一。1960年I.S.Recd和G..Solomond提出Rs“”码,RS码是一类纠错能 力很强的多进制BCH码。它不但可以纠正随机错误、突发错误以及二者的组合,而 且可以用来构造其它码类。因此,RS码在卫星通信,数字电视传输以及磁记录系统 等许多领域得到广泛应用。1955年埃莱亚斯(Elias)提出了不同于分组码的卷积 码,接着沃曾克拉夫特(Wozencraft)提出了卷积码的序列编码。1967年维特比 (Viterbi)提出了卷积码的最大似然译码法―Viterbi译码法,这种译码方法效 率高、速度快、译码较简单,目前得到了极为广泛的应用。1966年福尼(Forney) 提出级联码概念,用两次或更多次编码的方法组合成很长的分组码,以期获得性 能优良的码,尽可能接近香农限。如20世纪80年代采用的一种以码长n=255的RS码为外码、约束长度为7、码率为1/2的卷积码为内码进行级联,且内码采用Viterbi译码,即具有非常好的性能,在lO。误码率条件下,所需信噪比仅为0.2dB.erasurecode原来是无线通信中有噪信道编码的一种,也叫纠删码,后来由Kamin提出的密钥共享【lS](secret sharing)以及M.0.Rabin提出IDA[19](InformationDispersalAlgorithm)算法,将其引入到计算机应用中,发展到现在,已有数十种编码,主要包括Rs code和tornado code【201【2111221等,最常用的是Rs编码(后来分第16页 国防科学技术大学研究生院工程硕士学位论文析发现,IDA的实质也是Rs编码[231),它适合于m,rl较小的情况下(如re+n<256),tornado code能实现很高的编解码效率,但它是在m,n较大(如m=200,n---200)的前提下才能体现出优势。本文主要考虑mjl较小的情况,故主要研究RSeI'aSlll'ecode。code的基本思想是:将一个数据文件划分为in个等长的数据块(不足的以0补充),通过编码生成n个检验块,根据其中任意m个分块就可恢复出原 文件,而少于m个分块无法获取原文件,这样能容忍多达n个节点的失效。这里 m/(m+n)称为编码率。efa¥11fecode具有良好的容错性和安全性,在计算机存储及安全领域应用很广。在21世纪的今天,信息的安全性和可用性受到了极大的挑战,尤其是在分布 式存储系统中,通过采用纠错编码技术在相当大的程度上提高了信息的安全性和 可用性,纠错编码技术显示了巨大的魔力。3.2基于Vandermonde矩阵的RS算法‘241分析与实现3.21基本思想1 q020吃 口22定义l:形如玩2q2的矩阵,称为Vandermonde矩q”一1吃”1…%”1阵。我们首先举个例子,来说明校验块的生成过程。如图3.1所示,当n=8,m=2 (n为信息块数目,m为校验块数目)时,将数据M分为D.,D2,...,D./k个数据块, c。、C:两个校验块由Fl,F2两个算子分别运算得到。第17页 国防科学技术大学研究生院工程硕士学位论文④⑤ ⑤⑨ ④⑤=乃(玖,D2:现:现:晚:协:D易侥)④④@④ =为(DI:D2:D3:玩撬:撬:历:乃8)图3,1用两个校验块提供两次容错【24J我们把每个数据块分成字处理,字的长度为Wbits,W可由程序设计者自行选 择,每个数据块包含k个字。为简化描述,假设每个块只包含一个字,我们把数据分为dl,d2….dn共n个字的数据块,经运算后产生111个字(cl~.,C。)的校验块。为了计算校验块ci的校验字,我们定义Fi为数据字的线性组合,对数据字作如下处理:cj=只(碣,易…,d.)--E嘭毛。如果我们把数据字和校验字分别表J11示为向量D和c,函数Fi是矩阵F的行向量,则有等式FD=C成立。 我们把F定义为m×n的Vandermonde矩阵,其中^J―J 变成如图3,2所示:l 2 2,一J,-l,故上述等式即可^.。 厂2.。 六.。dl d2 d3:●l工厶六厶11 1l‘厶六2J厶01 2d。1” 刀2●d1 d2 d3:●Cl C24:C3●:12m-I甩肌一1d。Cm图3.2编码矩阵等式1 第18页 国防科学技术大学研究生院工程硕士学位论文下面我们再说明如何进行数据恢复。为了说明数据恢复的过程,我们定义矩阵A和懈…一阱料瓢糊将有等式∞锄立,矩阵A称为生成矩阵。如图3.3所示:1 0 0 l O一一●0 0●匾 吃:●:O l 10 l 20;O 一1 3~●●1 1一●刀:|1 =●以q Q;12m一1.-.3十0●疗m―I%图3.3编码矩阵等式21241若m个数据块丢失,则将m个数据块对应的矩阵A,E中的行删掉,得到新的 疗×n阶矩阵A’和lxⅣ阶矩阵E’,由于F是Vmderraonde矩阵,所以A的任意n 行子集都能保证是线性独立的,因此矩阵A’必是非奇异的,即可以对4’求逆得到 4”,恢复数据则只需通过D=At-I E‘完成。如果少于m个数据块丢失,刚任选其 中n个数据块对应的n行,同样能得到nX”阶矩阵A’,进行恢复。这样此算法能容忍不多于m个数据块丢失时的数据恢复。3.22 GaiNs域上的运算GF(2”)上的元素为0―2….1的整数,加法和减法很简单,他们都是XOR运算,例如:在GF(24)中:11+7=1011 00111=1100=12 11―7=101l00111=1100=12乘法和除法要复杂的多,以乘法为例,其运算过程是伫町:先要将元素的二进 制形式转化为多项式的形式,然后作多项式的乘法,再将结果对本原多项式(砸mitive polyIlomial,GF(24)中本原多项式为工4+z+1)求余,最后再把结果转化为二进制的形式。以11×7为例进行说明:11的二进制形式(1011)对应的多项式为,+x+1,7 的二进制形式(0111)对应的多项式为X2+x+1,两个多项式作多项式乘法后的结果再对本原多项式X4+工+1求余,结果是X2,转化为二进制形式为100,即为4。当w比较小(16或者更小),我们用两个对数表来加快运算速度,每个长2….1,第19页 国防科学技术大学研究生院工程硕士学位论文两个表分别为gnog和gfilog:≯intgn091]:这个表是定义了l一2"-1,并给出他们在Galois域上的对数。》int西logH."这个表定义了O一2…一2,并给出了他们在Galois域上的反对 数,显然,有gnog[gfilog[i】】=i,和西log【gflog[i]】=i成立。 下面是两个表在GF(28)和GF(216)上的c语言实现代码:2 O: static int gf_already setup#ifdef贮占smile hat static int static hatModar_nw2256;2Modar_nwml Modar_poly Modar nw 22255;0435;#elffW二16static hat static int static int #endif 65536;5Modar_nwml Modar_poly265535;0210013;忸TO J为龃og表,JJo_里为面log表static static voidhat+B_To-J;int’】joJ;gf_modar_setupO.{ intj,b,t;if(gf_already_setup)return;Bjoj=(rot|)malloe(sizeof(int)’Modar_nw);J―TO―B=(int+)malloe(sizeof(int)+Modar_nw);for0=0;j<Modar nw;j抖){ B_TOJ啪=Modar_nvanl;J』0-BD】.O;}b2 1;for(j=0;j<Modar_nwml;j‘∽{8T0.J[b】-j;JJO』D】2b; b=b“1:if(b&Modar nw)b=(b“Modar_poly)&Modar_nwml;第20页 国防科学技术大学研究生院工程硕士学位论文gf_alreadysetup=1;)通过查表实现的乘除法代码如下:#define intModar―nwml(1“w),/即Modar―nwral为2的W次幂xxx.intgf_single_multiply(int j;yyy){int sumgf_modaLsetupO;//建立鲷og表与gfilog表,如两表己存在,则跳过 if(xxx一0 J|YYY―O){re!tum O:f『Bjoj为gflog轰jjo卫为gfilog表sumA=B_TOJ[xxx]+B_TO_J[)ryy】; if(sum_.j>2 Modar_nwml)sumA?=Modar_nwml;returnJj、o―B【surnj】;intgf_single_divide(inta,intb){intsum.j;modar_setup0;gfif(b―O)return一1;if(a一0)returnO; 2 sumA B_T0_J【a】-B30』[b】;if(sum_j<O、sumA+=Modar_nwml; ret啪J』O_B[sum j];3.23程序简介给定n个数据块和irl个校验块,则实现基于Vandermonde算法的主要步骤如下: 1、选定w的值使得2”>re+t;,容易选w=8或者16,这是因为W刚好是 一个字节的整数倍;2、按上述算法建立对数表及反对数表;第2l页 国防科学技术大学研究生院工程硕士学位论文3、建立矩阵F为研×疗的Vandermonde矩阵, 注意乘法运算是在OF(2”)上进行的;五,=j,-I(1≤i≤坍,l≤/≤功,4、用矩阵F和数据块进行运算,来生成和维护校验块,注意加法和乘法运 算同样是在GF(2”)上进行的; 5、如果有不多于m个数据块丢失,都可以以如下方式进行恢复:从剩余的 块中选取n个块(无论数据块还是校验块),按照3.2.1节方法建立矩阵一’及向量 Et,从公式D=一”.E’中求出D,即可以恢复出原数据。 下面把源程序里各主要函数的功能做一下介绍:voidgf_modar_setup0:此函数用来建立驵og表与gfilog表,如两表已存在,multiply(inta.int则跳过。int gf_singleb):此函数做两个数的乘法,并返回所得结果。int voidgf_single_divide(inta’intb):此函数完成a除以b,并返回结果。gf_add_parity(void*to_add,void*to__modify,int size):此函数的工作是计算两个存储区域的奇偶值,to_add和to_modify,大小均为size字节, 结果存放在to_modify.voidgf_fast_add parity(void*toadd,void*to modify,intsize):此函数用来计算to_add和to_modi秒两个存储区域的奇偶值,每个区域的大小均 为size字节,结果存放在to_modify.voidgf_mult_region(void*region,intsize,intfactor):此函数完成region中的字与factor的乘法。Size定义了region中的字节数。Region是 可重写的。然而,如果factor不是0的话,可以通过调用gf_mult_region(region,size。gf_single_divide(1,factor))来恢复region。 int*gf_make_vandermonde(introws,intcols):此函数生成并返回一个 cols):此函数生成并返回rows{ecols的Vandermonde矩阵。这个矩阵是一个rows¥cols的数组。int*gf_make_dispersal_matrix(int 一个rows*cols的dispersalmatrix。 rows,intCondensed Matrix*gf_condense existing rows,int rows,int dispersaldispersal_matrix(int木disp.int木cols):当进行解码的时候,必须根据情况删掉matrix中出错的行,得到的矩阵将被用来计算丢失的块。这个函数就是用来完成删除的工作。历印是原先的dispersal matrix,是从gf_make_dispersat_matrix(introws,intcols)得到的。Existing_rows是一个有rOWS元素的数组,包含0,1。如果你有块i的话,元素f将为I,如果块i丢失的话,将为0。 国防科学技术大学研究生院工程硕士学位论文此函数生成并返回一个按如下定义的压缩矩阵:typedefstruct{‘/宰Then*nint*condensed_matrix; deleted卑|dispersalmatrix withrowsint*row_identities:identities of thecond_matrix木/}Condensed_Matrix: 注意,总是可以通过调用gf_condense_dispersal_matrix0,来获得一个压 缩矩阵。即使没有行需要被删除。Rowidentities说明了压缩矩阵中哪些行被留了下来。 int*gf_invert_matrix(intsmat.introws).此函数完成方阵mat的求 eols):将一个矩阵保逆,返回舾}彤透够筝ogf writemtrix(FILE蟠,int木a,intrOWS,int存在文件中。 int*gf_read_matrix(FILE木f’int*rows,int*cols):从文件中读取矩阵。 3.2.4算法复杂度125】编码复杂度:O(mn) 解码复杂度:O(n3)3.3基于Cauchy矩阵的RS算法分析与实现3.3.1 Cauchy矩阵简介3.3.1.1Cauchy矩阵的定义定y.1261:令F为Galois域,令{^,而,…,‰},{乃,均,…%)是域F中的两组元素,满足:(i)Vie{1,…,m}W∈{1,…,聊}:t+"≠o一 andVi,_,∈{l,。一,以},f≠,:M≠乃, (ii)Vf,歹∈{1,.一,川j,f≠,:t≠x』 国防科学技术大学研究生院工程硕士学位论文l ‘+Yl l 而+M l l而十儿1而+只1恐+y2毛+%矩阵1 1 xmd+y2 l xm+yl 1称为域F上的Cauehy矩阵。靠-1+乃1 xm+M…xmd+yH … 1xm+yH定理1[26]:令C为一Cauchy矩阵,则其任意一个子方矩阵必是非奇异的。 定理21261:任意一个"×"阶的Cauchy矩阵在Galois域F上的求逆运算,都可 以在F上的O(n2)运算内完成。3.3.1.2Cauchy矩阵的构造定义:n代表信息块的数目,m代表冗余块的数目,2…为信息块的字长,13.,m,w满足ll+m≤2…。令)仁{■,…,靠},Y≮M,…,y。},Vx。,Y,,是GF(2…)上的独立元素,并且1JnY≠O,那么由X,Y定义的Cauchy矩阵在(i,j)位置的元素为―二一。xt+yi我们以n=5,m=2为例,构造在GF(23)上的Cauchy矩阵。令x彳{1,2}, Y---{O,3,4,5,6,,通过查加法表和乘法表(如图3.4),所得的生成矩阵如图 3.5,Cauchy矩阵是其中的后131行。0 0 12l l O32 2 33《S 3 2l 0 7 6 5 46 6 7 4 57 70l234S‘754 756 了 O l650 O ―Ol §623i‘ 矗 工 2 矗 5 t 2 5 l 3 7 岳S ;67 37O 1矗 7 4l7326虚3毒 525矗l43rj 0 0 O? 2 3 {S 4 6 36 l 4 2‘ 7 l §3 5 2 14033O2 l6 6432l0加法乘法图3.4 GF(23)上的加法和乘法表口1第24页 国防科学技术大学研究生院工程硕士学位论文图3.5查表构造的生成矩阵127】二{豳当n=5,m=3时,将数据M分为Dl,D2,D3,D4,Ds五个数据块,我们先 按上述方法生成生成矩阵,然后对该矩阵中Galois域元素用m*m阶的O.1矩阵进行了替换,结果如图3.6所示:图3.6生成矩阵变化图12q通过编码(解码过程类似),生成c1,C2,C3三个校验块,如图3.7所示:图3.7基于Cauehy矩阵的Rs编码因为新矩阵的运算是基于GF(2)的,所以校验块的运算可以通过数据块的XOR 来完成。要计算Cij的值,可以用ciJ在Cauchy矩阵中的相应行中的所有对应位为 1的数据块来进行XOR.,以C1,1为例说明:Cl,1=Dl,1。D2,1。D2,2*03,3。D4。I第25页 国防科学技术大学研究生院工程硕士学位论文oD4,2oD4joD5,2.3.3.2基于Cauchy矩阵的RS算法实现基于Cauchy矩阵的RS编码是在基于Vandermonde矩阵的RS编码上作了两点改进:>用Cauchy矩阵来代替Vandermonde矩阵,由于Vandermonde矩阵求逆运 算的复杂度为O(n3),而Cauchy矩阵求逆运算的复杂度为O(n2),替换后 能降低矩阵求逆运算的复杂度;>用基于GF(2L)雕J L?L的O-1矩阵代替Galois域中的元素,从而以XOR运算来代替基于Oalois域的乘除运算,能大大提高运算效率。 在具体实现上可以在基于Vandermonde矩阵的RS算法代码基础上,分为三步 来完成: 第一步,修改函数int*gf_make_vandermonde(intCauchy矩阵,并代替原来的Vandermonde矩阵。rows,intcols),生成#Cauchy矩阵生成过程int‘gf_make_dispersal_matrix(int rows,int cols,im w){int+vdm,i,j,k;int+xm,+yn;//x={O,1…m一1)y={m,m+l,...re+n-l}Xnl2(im+)malloc(sizeof(int)+(rows―cols));yn2(int+)malloc(sizeof(int)+cols);for(i=O;i<rows―cols;i++) { xm[i]=i; }for(j-o;j<cols;j州{ yn[j】-j+rows―cols; } )voidgf_modar_setup();vdm=(int+、malloc(sizeof(int)+rows+cols);if(vdm―NULL){perror(”Malloe:Chauchy matrix”); exit(1); )第26页 国防科学技术大学研究生院工程硕士学位论文for(i20;i<cols;i++){for(j=O;j<cols;j抖){if(i―j)vdm[i’eols+j】=1;if(i!=j)vdm[i+eols+j】=0; } )i--j=1: for(i2 1;i<rows―cols+l;i++){fora}21;j<eols+l;j‘H){vdm[(i一1)4eols+j-1+cols+cols】2 gf_single_divide(1,xm[i一1】“yn[j?1】);)gf_fprint__matrix(stdout,vdm,rows,cols); 第二步,新增函数int**gf_make w matrix(int+ydm,intm,int n,intW),用基于GF(2’)的W*W的O一1矩阵代替Galois域中的元素,以XOR运算来代替基于Galois域的乘除运算。第三步,对for循环进行了优化。在编码实现中,核心程序为如下for循环://计算冗余块 for(i=O;iqn;i++) for@=o;k《w;k++)for(h--0;h<n+w;h州{if(wwdm[i+、Ⅳ+k】【h】一1){ for(c=0;c<packetsize/sizeof(unit);c++、 { packetm[i][k+paeketsize/sizeof(uni0+e]A=_ buffer[h/w]0a%w*paeketsize/sizeof(unit)+c];)’ )通过在循环执行之前对循环中要使用的常量提前计算和存储,应用流水线的 思想减少了循环等待时间;尽量以移位运算来代替乘除法;替换求余运算,以减 小运算的强度,优化后算法效率得到了明显提高,优化后的代码如下:inttO,tl妲,t,t4,tm,tml;j=packetsize/sizeof(uni0;d=n’w:一―――――――――百ii―――――――――――一for(i=O;i<m;i++) 国防科学技术大学研究生院工程硕士学位论文{ tm=i(Q:t0=tm-i;//以移位运算来代替乘法运算for(k卸;k<w;“+){tl=t0+k;t2=k*j;forOFO;h<d;h十卜){if(wwdm[t1]【h】一1){t=bJ3;tml---t<<2;t4=(11-tml+t)々;//替换求余运算以提高效率for(e=0;c<j;c抖){ packetm[i]It2+el^=buffer[t】[t4+c】; } } ) )给定n个数据块和nrl个校验块,则实现基于Cauchy算法的主要步骤如下: 1、选定w的值使得2”≤肌+栉,这里w可以任意选取满足条件的值; 2、建立矩阵F为mxn的Cauchy矩阵,^J=上(1≤f≤肌,l≤.,≤力;1确十M3、建立矩阵H,用基于GF(2”)的w?w的O一1矩阵代替矩阵F中各个元素; 4、用矩阵H和数据块进行运算,来生成和维护校验块,运算是基于XOR进行的; 5、如果有不多于m个数据块丢失,都可以以如下方式进行恢复:从剩余的块中选取n个块(无论数据块还是校验块),按照3.2.1节方法建立矩阵彳’及向量E’,用基于GF(2w)的W+W的0-1矩阵代替矩阵4’1中各个元素,从公式D=A”.E’ 中求出D,即恢复出了原数据。 3.3.3算法复杂度【25】由于文件分块原因,编码算法复杂度为O(m(n一肌)),改进后解码算法由于异 或运算取代乘法运算,减少了乘法运算的次数,解码复杂度降为O(n2)。两种算法第28页 国防科学技术大学研究生院工程硕士学位论文的复杂度对比如表3.1-表3.1算法复杂度对比基于Vandermonde矩阵的RS算法编码 解码 3.3.4性能测试 O(mn) O(n3)基于Cauchy矩阵的RS算法 O(m(n-m)) O(n2)在测试平台为redhatlinux9.0,赛扬2.6G cpu,内存768M,取当n=5,m=4,w=4时,通过对大小不同的数据块分别进行了测试,实验结果如表3.2和表3-3, 对以上两表结果进行分析,经计算得到如下结果:编码效率平均提高43.12%,解 码效率平均提高76.96%。表3.2编码时间对比表\算法文赫1M 2M 5M基于Vandermonde基于Cauchy矩阵的RS算法(s)0.027026 0.054903 0.166630 0.317258 0.638306 1.249287\ 矩阵的RS算法(s)0.052876 O.112695 0.308442 0.582718 1.025925 1.76526910M 20M 40M表3.3解码时间对比表\\算法 文件套k1M 2M 5M lOM 20M 40M基于Vandermonde基于Cauchy矩阵 的RS算法(s)0.026125 0.062164 O.218118 0.397613 0.659838 1.354966\ 矩阵的RS算法(s)O.139524 0.236815 0.873483 1.580634 2.553286 7.80977l3.4本章小结本章首先简要介绍了elastlre code的发展及基本思想,分析并实现了基于第29页 国防科学技术大学研究生院工程硕士学位论文Vandermonde矩阵和基于Cauchy矩阵的两种erasure code算法,并详述了其代码实现,最后给出了性能测试。由于基于Cauchy矩阵的erasure code算法良好的编解 码效率,该算法在后述的高可用分布式存储系统中得到了应用。第30页 国防科学技术大学研究生院工程硕士学位论文第四章基于erasure code的高可用分布式存储体系结构设计4.1相关工作P2P技术以非中心化、健壮性、可扩展性、高性价比、负载均衡等优点日益受 到人们的关注,在各个方面得到了广泛的应用,特别是在文件共享方面取得了巨 大的成功,如Napster,Gnutella,KaZaa等。 由于分布式散列表技术(DHT:Distributed Hash Table)的引入,使得基于P2P 的广域存储系统的研究成为当今的研究热点之一,在研的项目有很多,如 cfs(chord)、past(pastry)、granary(pastry)等。DHT类结构有着良好的可扩展性、鲁 棒性、结点ID分配的均匀性和自组织能力,它假设每个节点具有相同的能力,但 由于在实际P2P环境中节点所具有的异构性,动态性,不可信任性及易受攻击性, 影响了存储系统的可用性,致使这些系统都没有形成实际的商业化产品。 冗余是一种提高数据的有效性和安全性的基本方法。实现冗余有两种最基本 的方式,一种是完全复制,如镜像(mirroring),一种是编码(erasure code)实现,如RAID.5,RS code,tornado code等。相关的技术在计算机系统内部面临部件失效解决数据可用性问题方面相对成熟,但在无边界网络环境下面临智能攻击解决信 息生存性问题的研究还有相当多的问题亟待解决。文献11】通过对比分析,发现erasurecode只须较少甚至是低几个数量级的存储及网络带宽开销,就可以实现和完全复制(replica)相同的系统要求,并且具有更好的容错性能。 在863项目“协作式应急响应服务与基于漂移的可生存系统研究”[28][291dp, 我们构造了基于P2P的无中心安全协作和安全信息发布平台,在该平台基础上针 对P2P节点的动态变化对系统可用性的影响,本章将erasurg code与DHT技术结 合起来,提出了一种高可用的分布式存储体系结构130】。 该系统除民用外,还可以应用在军事上,主要有几个方面: 一是可以充分利用各级部队机关局域网的空闲空间,用于机密信息的分布存 储,避免了采购专用存储服务器的投资;同时增强了保密性能,面l临敌意的网络 攻击时,即使数个节点数据被破坏或被窃取,攻击者也无法获取完整有效的信息; 二是可用于保护军网中重要的门户网站的日志文件,可将其日志文件分布到 多个节点上存储,以达到防止敌意攻击者实施攻击后删除或篡改; 三是可用于建立军事信息仓库,用于秘密以上等级军事信息的集中存储与获取,便于数据的备份与灾难恢复。目前DHT算法主要有Pastry,Chord,CAN,Tapestry等。本系统以Chord为 例来研究。每个节点除维护一个路由表(finger table)外,还维护一个后继表第31页 国防科学技术大学研究生院工程硕士学位论文 (Successor table),用于容错:当继承者失效后,可由后继表中的下一个继承者接替相应位置;此外还能提供数据冗余:可将某节点上的数据复制到它后继表 中的各节点上,来提高数据的有效性。本系统也是将文件的分块存储到后继表中 的各个节点上。chord具体细节描述见上述2.1.4节。chord基于最基本的lookup(key),向上层提供如下API: Lookup(key,m):返回key所在的节点的m个继承者的地址列表;Get―successor_list(key):返回某个key的全部继承者列表。4.2体系结构本系统体系结构是面向广域网中的数据存储提出的,它在chord基础上,结 合erasure code编码,通过跟踪维护节点的动态变化,保证在部分节点(n个节 点)同时失效的情况下仍能可靠恢复原数据,从而实现了高可用的数据存储。如 图4.1,系统由系统接口、chord层及功能模块层三部分组成,其中系统接口为上 层应用程序提供接口;chord层维护路由表,完成数据块的定位;中间层包括文件 编解码模块,分块分发与获取模块,动态维护模块及其它功能模块等,它利用chord 提供的接口,实现对数据块的可靠存储、维护及相关功能,各个模块的具体实现介绍如下: ;”。”≈。,i。篓÷蓐5;承虢丝”、?磁貉鼍搿’,鹾魏文件编}分。块分}动态I其”它功 解码模f”发与获I维护l能模块 块.。 l取模块|模块l≈I―r‘,p一、r:5%“r’图4.1系统结构图4.2.1文件编解码模块 该模块负责对文件进行erasure code编码与解码。本系统采用Cauchy-RS code编码作为它的erflsul'e code,它是VandermondeRScode的改进,主要操作基于异或进行,大大提高了编解码的效率。具体编解码算法见前述3.3.节。 4.2.2分块分发与获取模块 本系统中,DHT设置每个节点的successor table的数量为m+n(m为数据分块 数量,n为校验分块数量),用来容纳文件经Cauchy―RS code编码后的m+n个分块。 源节点将编码后的m+n个分块发送到标识为id=sueeessor(sha-l(file))的目的节点的successortable中的m+n个节点上,并在源节点及目的节点上各保留一份元数据文第32页 国防科学技术大学研究生院工程硕士学位论文件,用来记录文件名,key(即sha-l(file)),文件大小,分块大小,发送时间,文 件上次访问时间,发送者的IP及ID,m,n,代码的生成矩阵,以及ACL(Accesscontrollist)表。如果从源节点直接读取文件,则无须访问ACL;如果从其它节点读取文件,则需要访问ACL,并通过相应的验证,才能读取文件。 该模块在DHT上实现了两个可以提供给外部应用程序的APh Put(key,b):插入文件b,其中key=sha-1(b);Ge

我要回帖

更多关于 chmod 只读文件系统 的文章

 

随机推荐