基于Ceph的读写模型优化和异构副本组合方法与流程

文档序号:16133669发布日期:2018-12-01 00:38阅读:238来源:国知局
本发明属于计算机
技术领域
,涉及分布式文件系统ceph异构存储领域,尤其涉及一种对象存储副本组合方式和读写模型优化方案。
背景技术
近年来,由于云计算和云存储的引入,面对海量级的数据需要计算与存储,分布式系统成为首选。它将各种各样的存储资源结合起来共同对外服务,可以将单一的任务分发到不同的节点进行处理,大大提高了处理的效率。ceph作为一个新兴的分布式存储系统,它的原型是一项关于存储系统的phd研究项目,由加利福尼亚大学的sageweil在2007年提出。2010年三月底,可以在主线linux内核(从2.6.34版开始)找到ceph的身影。目前inktank公司掌控ceph文件系统的开发,ceph是开源的,遵循lgpl协议。ceph的第一个版本在2012年6月发布。ceph这个分布式存储系统拥有很多亮点,它拥有块存储、对象存储、文件系统存储的统一存储能力和自动化的维护等等,它是一个可靠的自治的分布式存储系统。ceph使用crush算法替代了广泛使用的一致性哈希,很好的解决的数据分布的问题,消除了传统分布式存储中的中心节点,客户端只要使用crush就可以知道数据存放在哪。并且ceph的元数据服务器集群使用了动态子树分区的策略,可以很好的平衡各个元数据服务器上的负载。ceph目前在openstack社区中备受重视,得到越来越多的应用。openstack是目前最为流行的开源云操作系统。ceph由于它的统一存储能力可以作为openstack的强大的后端存储,大部分openstack的研究者或使用者都会将ceph作为他们的备选方案,毕竟ceph能提供openstack需要的分布式对象存储、块存储、文件系统存储。ceph可以将对象通过映射策略均匀地分散到各个存储设备上,但是ceph仅将储存节点的剩余容量作为权重,并未考虑存储节点的异构情况,换句话说ceph是不感知异构的。这将使ceph的数据存放策略不能有效发挥异构存储设备的性能,同时由于ceph采用的是强一致性的策略,客户端将数据送给主节点后,经由主节点将数据发送给从节点,当所有的副本节点都持久化成功后主节点才会回复客户端写成功信息,在此期间客户端不能进行其他的操作,这极大地限制了ceph的写效率。同时ceph在读对象时只读主副本,没有发挥从副本的i/o性能。技术实现要素:有鉴于此,本发明的目的在于提供一种基于ceph的读写模型优化和异构副本组合方法,用于解决ceph不感知异构存储节点以及读写性能延迟较高的问题。为达到上述目的,本发明提供如下技术方案:一种基于ceph的读写模型优化和异构副本组合方法,具体包括以下步骤:s1:改变ceph副本写强一致性模型为副本写弱一致性模型,当主副本节点写完毕后立即返回客户端写成功信息,降低集群的写延迟以提高集群的写性能;s2:针对ceph只从主副本节点读取对象的现状提出采用一种读优化方案以充分发挥从副本节点的性能,用副本节点的综合性能作为权重,来决定副本节点提供读服务的概率,充分发挥从副本的性能以提高集群的读性能;s3:针对ceph集群不感知异构存储节点,对象副本节点通过ssd和hdd的不同组合方式的读写性能特点充分发挥集群的异构特性,并设置对象的初始副本组合方式为1ssd+2hdd;s4:根据集群的数据热度提出采用一种数据迁移方案从而充分发挥各种副本组合方式的读写性能特点,同时改进ceph选择对象存储节点算法,根据数据热度将对象迁移到符合相应副本组合方式中,从而提高整个ceph集群的读写性能。进一步,ceph采用的是副本写强一致性模型,在写对象时客户端将对象发给主副本节点,由主副本节点将对象发给从副本节点,当主副本节点收到所有从副本节点写完成的回复信息,并且主副本节点也写完毕后才回复客户端写成功信息,这样会造成客户端在写入过程中过长时间的等待。故本发明提出一种副本写弱一致性模型,客户端将对象发送给主副本节点,当对象在主副本节点写完毕后立即发送写成功信息给客户端,如图1所示,将有效的提高写效率,同时也保证了数据的安全。所述步骤s1具体包括以下步骤:s11:客户端通过映射算法crush得到一组副本节点,并将第一个节点作为主副本节点,其他为从副本节点,客户端将对象发送给主副本节点;s12:主副本节点将对象写入磁盘并同时开启一个线程将对象发送给从副本节点,当主副本节点完成写入后立即返回客户端写入成功信息,并由主副本节点的后台维护从副本节点的该对象写入。进一步,所述步骤s2具体包括以下步骤:s21:在读取对象时,先通过映射算法计算出对象的一组存储副本节点,并判断对象是否被从副本节点写完毕;s22:若从副本节点中的对象还没有写入完毕,则直接从主副本节点读取对象;s23:若从副本节点中的对象写入完毕,则通过节点的综合性能算法计算出每一个副本节点的性能值,将每个节点的性能值分别乘以一个不同的随机数,由乘积最大的节点来提供读服务。进一步,ceph在读对象时,只从主副本节点读取对象,会造成主副本节点的i/o压力比较大从而影响读性能,而且没有发挥从副本节点的i/o性能。为了降低主副本节点的i/o压力同时充分发挥从副本的i/o性能,用副本节点的综合性能作为权重,来决定副本节点提供读服务的概率。存储节点的性能根据存储节点的cpu、内存、硬盘、距离来综合考虑得到的,如(1)式所示,所述通过节点的综合性能算法计算出每一个副本节点的性能值为:pi=w1distancei+w2diski+w3cpui+w4memi(1)其中,pi为存储节点的性能,distancei为存储节点的距离,diski为存储节点的硬盘,cpui为存储节点的cpu,memi为存储节点的内存,w为各个性能指标的占比参数;将分别使用一个随机数乘以性能p,用最后乘积最大的那个副本节点来提供读服务,如(2)式所示。从副本节点中选择decision最大的节点来提供读服务,以充分发挥从副本的性能来提高ceph的读效率;decisioni=pi*randomi(2)其中,randomi为随机数。通过(1)(2)式就可以确定对象从哪个副本节点读取。由于写采用的是弱一致性模型,所以存在当读取对象时,从副本节点中的对象还没有完成写入过程,虽然这种情况会很少出现,因为刚写完毕的对象很少立即读取,但是也应考虑这种情况。所以当读取对象时,先判断对象是否在从副本节点中写入完毕,如果在从副本节点中写完毕则通过上面的模型选择decision最大的节点读取对象,反之则从主副本读取对象,如图2中流程图所示。进一步,所述步骤s3中,ceph是不感知异构存储的也就是说在由ssd和hdd的组成的ceph集群中,不能发挥ssd的性能优势。本发明针对ceph不感知异构存储,通过ssd和hdd的不同组合方式的性能特点来充分利用ssd的性能优势。如表1所示,所述对象副本节点通过ssd和hdd的不同组合方式为:3hdd、1ssd+2hdd、2ssd+1hdd和3ssd,其中ssd为主副本;不同副本组合方式中读性能分为四级:3hdd﹤1ssd+2hdd﹤2ssd+1hdd﹤3ssd;写性能分为两级:3hdd<1ssd+2hdd=2ssd+1hdd=3ssd。表1组合方式和组合类型对应关系副本节点组合方式3hdd1ssd+2hdd2ssd+1hdd3ssd副本节点组合类型a类b类c类d类可以看出上述四种副本组合方式中,写性能分为两级,读性能分为四个级别,为了提高整个集群的读写性能充分发挥以上四种组合方式的读写性能特点,应将相应的数据对象放入对应的副本组合中,因为对象刚放入集群中是没有热度的,所以默认对象刚放入集群中采用b类组合方式。进一步,所述步骤s4中,根据收集数据的热度分析,将相应热度级别的对象迁移到步骤s3中对应的四种副本组合方式的中,从而充分发挥不同副本组合方式的读写性能特征,以提高数据的读写性能;如表2所示,将读热度分为四个级别:冷rt1、较热rt2、热rt3和最热rt4,分别对应四种不同的组合方式,读热度rt1对应组合方式3hdd,读热度rt2对应组合方式1ssd+2hdd,读热度rt3对应组合方式2ssd+1hd,读热度rt4对应组合方式3sdd;表2读热度与组合类型对应关系读热度级别冷(rt1)较热(rt2)热(rt3)最热(rt4)副本组合类型a类b类c类d类如表3所示,将写热度分为两个级别:冷wt1和热wt2,分别对应相应的副本组合方式,写热度wt1对应组合方式3hdd,写热度wt2对应组合方式1ssd+2hdd、2ssd+1hdd和3ssd。表3写热度与组合类型对应关系写热度级别冷(wt1)热(wt2)副本组合类型a类b类、c类、d类进一步,所述步骤s4中,根据对象的读写热度级别,来决定对象副本应放置的副本组合方式,如表4所示;表4读写热度与组合类型对应关系读冷(rt1)读较热(rt2)读热(rt3)读最热(rt4)写冷(wt1)a类b类c类d类写热(wt2)b类b类c类d类改进ceph集群映射存储节点算法,让集群在为对象挑选(映射)存储节点时加入数据热度信息,根据对象的热度挑选符合特定副本组合方式的存储节点。在进行对象的读写热度分析后,最终的副本组合方式选取过程如下:s41:根据副本组合方式和对象读热度对应关系得到符合对象读热度的副本组合方式;s42:分析对象的写热度,若写热度为wt1,则写热度副本组合方式为3hdd,若写热度为wt2,则写热度组合方式为1ssd+2hdd、2ssd+1hdd和3ssd;s43:取符合对象读热度的副本组合方式与符合写热度的副本组合方式的交集,交集不空,则返回交集,结束;交集为空,则下一步;s44:若对象写热度为wt2,则取符合写热度的副本组合方式为1ssd+2hdd,然后与符合对象读热度的副本组合方式比较,取ssd最多的副本组合方式;若对象写热度为wt1,则直接比较符合对象读热度的副本组合方式,取ssd最多的组合方式。本发明的有益效果在于:1)本发明提出了一种基于ceph的数据副本弱一致性方案,降低集群的写延迟以提高集群的写性能;2)针对ceph集群没有发挥从副本的i/o性能,本发明提出一种读模型充分发挥从副本的性能,以提高集群的读性能;3)针对ceph集群不感知异构,本发明通过ssd和hdd的四种不同组合方式3hdd、1ssd+2hdd(ssd主副本)、2ssd+1hdd(ssd主副本)、3ssd(ssd主副本)充分发挥异构性能;4)本发明根据集群的数据热度提出一种数据迁移方案充分发挥各种副本组合方式的性能,同时改进ceph选择对象存储节点算法,根据数据热度选择符合特定组合方式的一组存储节点。附图说明为了使本发明的目的、技术方案和有益效果更加清楚,本发明提供如下附图进行说明:图1为改进后的写模式;图2为对象读取流程图;图3为改进的ceph挑选副本算法流程图。具体实施方式下面将结合附图,对本发明的优选实施例进行详细的描述。本发明将ceph的副本写强一致性模型,优化为副本写弱一致性模型,即当主副本节点写完毕后立即返回给客户端写成功信息,并由主副本节点来维护从副本节点中该对象的写入过程;针对ceph在读取副本时只从主副本节点中读取的读模式没有充分发挥从副本性能,提出一种根据对象副本节点性能来决定由那个副本节点来提供读服务模型,以充分发挥从副本节点的i/o性能;针对ceph不感知异构的存储节点,提出异构副本的不同组合方式并根据对象热度动态的将对象迁移到符合特定组合方式的副本中,以充分发挥存储节点的异构性提高集群性能。本发明所述的基于ceph的读写模型优化和异构副本组合方法,包括以下步骤:步骤一:将副本写强一致性模型优化为副本写弱一致性模型当ceph写对象时,通过映射算法得出一组副本节点并且将第一个副本节点作为主副本节点其他为从副本节点,客户端将对象发送给主副本节点,主副本节点将对象写入磁盘并同时开启一个线程将对象发送给从副本节点,当主副本节点完成写入过程后立即返回客户端写入成功信息,并由主副本节点的后台维护从副本节点中该对象的写入过程,如图1所示。step1:客户端通过映射算法crush得到一组副本节点,并且将第一个节点作为主副本节点,其他为从副本节点,客户端将对象发送给主副本节点;step2:主副本节点将对象写入磁盘并同时开启一个线程将对象发送给从副本节点,当主副本节点完成写入后立即返回客户端写入成功信息,并由主副本节点的后台维护从副本节点的该对象写入。步骤二:改进读模式在读取对象时,先通过映射算法计算出对象的一组存储节点,判断对象是否在从副本节点写完毕,如果在从副本节点没有写完毕,此时直接从主副本节点读取对象。若从副本节点中该对象写入完毕,则通过节点的综合性能算法计算出每一个副本节点的性能值将每个节点的性能值分别乘以一个不同的随机数,并由乘积最大的节点提供读服务,如图2中流程图所示。step1:将要访问的对象的唯一标示objectid通过crush映射算法计算出该对象存储的一组节点;step2:判断该对象是否在从副本节点中写入完毕,若未写入完毕执行step3,在从副本写入完毕则跳过step3直接执行step4;step3:从主副本读取对象,结束;step4:计算存储节点的性能值,并分别乘以一个随机数;step5:从乘积最大的副本节点读取数据,结束。步骤三:改进ceph映射存储节点的方法,加入热度因子改变ceph中映射算法crush中的函数crush_do_rule,加入根据对象热度选择特定组合方式的步骤,在原有算法的基础上对选到的osd进行组合方式判断,并将组合方式判断加在对osd是否过载步骤之前以防止节点过载,同时对对象设置一个初始热度,即当对象第一次选择存储节点时默认为组合类型为b类(1ssd+2hdd)并且主节点为ssd,以提高对象的读写速度,如图3所示,改进后的ceph挑选副本算法流程为:step1:设置计算器rep=0,rep代表已选到的副本数;step2:判断rep是否等于设置副本数,若rep等于设置副本数则结束,否则进入下一步;step3:设置本副本可以尝试次数local_retries=20,已经尝试次数flocal=0,设置随机因子r,在当前的bucket下根据算法选择一个item;step4:判断item是否为期望类型,若不是期望类型则将item设置为当前bucket并跳到上一步setp3,若是期望类型则进入下一步;step5:判断item是否已经在输出条目列表中(即是否冲突),若冲突则将flocal=flocal+1并判断flocal是否小于local_retries,若小于则将随机因子r加一(r=r+1)并执行上一步step4,否则将rep加一(rep=rep+1)并跳到step2;step6:判断是否设置了容灾域模式,若没有设置容灾域则进入下一步step7,否则判断item是否为叶子节点,若为叶子节点则跳到step8,若item不为叶子节点则设置期望类型为叶子节点并跳到step1开始执行;step7:判断item是否为叶子节点,若不为叶子节点则直接放入输出列表中并将rep加一(rep=rep+1)跳到step2,否则执行下一步;step8:根据历史访问信息确定该对象的热度级别,若该对象是第一次存放则设置设置对象热度为初始热度,然后根据热度判断item是否符合该热度下的副本组合方式要求,若不符合则执行step9,否则执行step10;step9:判断是否为最后一次尝试,若不为最后一次尝试则将flocal=flocal+1并判断flocal是否小于local_retries,若小于则将随机因子加一(r=r+1)并执行step4,否则将rep加一(rep=rep+1)并跳到step2,若为最后一次则执行下一步;step10:判断item是否过载,若过载则将flocal=flocal+1并判断flocal是否小于local_retries,若小于则将随机因子加一(r=r+1)并执行step4,否则将rep加一(rep=rep+1)并跳到step2,若不过载则将item放入输出条目中并将rep加一(rep=rep+1)跳到step2;步骤四:根据对象热度迁移对象到相应的组合方式数据迁移步骤:step1:通过访问历史分析对象冷热级别;step2:根据对象冷热级别和当前组合类型确定迁移对象;step3:将迁移对象和迁移目标的副本组合类型写入迁移集合中;step4:遍历迁移集合为每个迁移对象选择一组符合该热度下副本组合类型的一组存储节点osds;step5:将对象迁移到osds中,并更新对象映射关系;step6:删除原存储节点中该对象。最后说明的是,以上优选实施例仅用以说明本发明的技术方案而非限制,尽管通过上述优选实施例已经对本发明进行了详细的描述,但本领域技术人员应当理解,可以在形式上和细节上对其作出各种各样的改变,而不偏离本发明权利要求书所限定的范围。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1