一种利用分布式数据编码的存储方法

文档序号:6535318阅读:260来源:国知局
一种利用分布式数据编码的存储方法
【专利摘要】本发明提供一种利用分布式数据编码的存储方法,客户端进程接收到来自缓存的数据后,进行编码计算生成校验数据块;完成编码以后,客户端发送数据片到所有的服务器端,每次一个服务器返回写成功后,在客户端维护计数器,根据系统的配置参数,当达到可以恢复数据的不同级别,则对写失败的服务器节点不再进行重写。该一种利用分布式数据编码的存储方法和现有技术相比,利用矩阵的运算实现了灾备方案,允许任意多个存储节点或者磁盘故障,使传统的纠删码或者矩阵运算的CPU占用率大大降低;实用性强,易于推广。
【专利说明】一种利用分布式数据编码的存储方法
【技术领域】
[0001]本发明涉及计算机数据存储【技术领域】,具体的说是一种利用分布式数据编码的存储方法。
【背景技术】
[0002]现代的传统分布式文件系统无论是商业还是开源系统,基本都是采用了多副本的方式保证数据的安全性,如商业的IBM的GPFS,蓝鲸的BWFS,Pansas公司的panFS等等,开源的例如lustre, GlusterFS, HDFS, ceph等,一般情况下是在节点间采用多副本的方式,保障节点的故障冗余,在节点上又采用RAID5或者RAID6等保障磁盘的故障冗余,往往副本的方式是通过多写一份数据的形式实现,这就导致写的性能随着副本的数量增加而成线性降低,对于磁盘间的RAID操作,不论是初始化还是重建恢复,其高耗时都是业内的难题,在种种的低效率的保障安全性的情况下,反而仅仅可以保障一两个节点和一个磁盘的故障,与工业上的99.9999%的要求相差甚远。
[0003]如今大数据时代,数据是一个企业的最重要的资产,数据的安全性很多时候是一个公司的命脉。当移动互联网时候的到来,海量用户的数据每日的增长速度惊人,在一定时间内,数据都需要高安全性的存储,而影响数据存储最主要的因素,一是安全性,二是性能。
[0004]在现有技术中,传统分布式文件系统中副本方式容易带来的脑裂问题和不一致性问题;同时传统的磁盘级RAID5或RAID方案会大大提高企业的成本,同时重建和恢复过程中功耗较大,造成资源浪费,基于此,现提供一种新型的、高可用的高性能存储方法。

【发明内容】

[0005]本发明的技术任务是解决现有技术的不足,提供一种利用分布式数据编码的存储方法。
[0006]本发明的技术方案是按以下方式实现的,该一种利用分布式数据编码的存储方法,其具体存储过程为:
一、客户端进程接收到来自缓存的数据后,进行编码计算生成校验数据块,该校验数据块可保证在3个节点或者磁盘损坏情况下进行,即采用N+M方式,N是数据块的数目,M是校验块的数目,N为大于等于I的自然数,M为大于等于3的自然数;
二、当完成编码以后,客户端发送数据片到所有的服务器端,每次一个服务器返回写成功后,在客户端维护计数器,根据系统的配置参数,当达到可以恢复数据的不同级别,则对写失败的服务器节点不再进行重写。
[0007]所述步骤一中客户端实时进行编码计算采用的为2+2分组并行高速编码方式,该方式的具体内容为:3个数据块为一组,采用两组分别编码方式形成各自的校验块数据,同时进行整个6块数据的总体编码,此时产生3个校验块,冗余度达到3。
[0008]所述步骤二的详细过程为:当客户端收到读请求时,由客户端发送读指令到所有的存储服务器节点,在客户端等待接受各个存储服务器返回的数据,当客户端对返回的数据进行一致性检测和计算器的累积以后,对于优先返回的校验块进行缓存,缓存个数根据配置确定,如果后续返回所有正常的数据块,则数据块返回给用户调用,缓存的校验块丢弃;
当正常读的过程中发现有数据块无法读取或者根据标记位发现已经损坏,则由缓存的校验块填充,并且根据2+2的分组情况,进行解码计算,得到数据后,再返回给上层调用的用户。
[0009]所述正常读流程中,优先发送读请求到正常的数据块节点。
[0010]所述集群中存在修复进程,该进程对所有的数据进行不间断的检查,当发现有数据丢失或者节点失效的时候,重新读取数据,解码恢复数据,然后重新写入存储服务器,修复进程对修复文件和布局都进行了详细记录,当新节点放回集群中,则由修复进程进行数据的转存。
[0011]本发明与现有技术相比所产生的有益效果是:
本发明的一种利用分布式数据编码的存储方法代替了传统的副本方式保证的可靠性,并且同时代替了磁盘级别的RAID方案,解决了副本的脑裂问题和低性能,以及RAID5或者RAID6方案中的重建和恢复的高耗时和高成本问题;利用矩阵的运算实现了灾备方案,允许任意多个存储节点或者磁盘故障,使传统的纠删码或者矩阵运算的CPU占用率大大降低;实用性强,易于推广。
【专利附图】

【附图说明】
[0012]附图1为本发明的写文件流程图。
[0013]附图2为本发明的编码算法示意图。
[0014]附图3为本发明中读文件流程图。
[0015]附图4为本发明中修复读文件流程图。
[0016]附图5为本发明中修复文件流程图。
【具体实施方式】
[0017]下面结合附图对本发明的一种利用分布式数据编码的存储方法作以下详细说明。
[0018]如附图1?5所示,本发明提供一种利用分布式数据编码的存储方法,其具体存储过程为:
如附图1所示,当客户端进程接收到来自缓存的数据后,进行编码计算生成校验数据块,传统的计算方法有柯西编码矩阵和范德蒙矩阵,而进行矩阵运算往往占用很高CPU,性能也得不到提高,考虑到实际应用中绝大多数是出现一个节点故障或者两个节点故障,此方案在实际情况中可以保证3个节点或者磁盘损坏即可满足需要,在该技术方案中将其称为N+M方式,N及时数据块的数目,M是校验块的数目,此时M=3,相对应的,如果采用副本方式,要同时存在4个副本,这时副本的性能会大大降低。
[0019]在HDFS,TFS等开源方案中,同样存在柯西矩阵或者范德蒙矩阵的编码容错方式,但是他们均采用的是在存储节点上进行,无法保证数据安全的实时性,异步进行的方案可靠性差,安全性低,而且多数的方案都是采用保留副本的方式,这样写性能根本得不到保证,本发明采用客户端实时进行编码计算,并进一步优化性能,不论从安全性还是性能均远超HDFS和TFS等分布式系统的方法。
[0020]同时发明采用了一种2+2分组并行高速编码方式,如附图2所示,3个数据块为一组,采用两组分别编码方式形成各自的校验块数据,同时进行整个6块数据的总体编码,这样一共会产生3个校验块,冗余度也达到3,相当于副本4的方案。而产生一个校验块的最快的速度是采用线性编码,性能大大优于范德蒙矩阵或者柯西矩阵的编码方式。
[0021]实际应用中往往一个或者两个节点的损坏性很大,则恢复数据往往只需要一个校验即可,降低了校验块的传输数量和提高了恢复数据的解码速度。当在第一组损坏一个节点,第二组损坏2个节点的时候,则需要第三组的两个校验块和第二组的一个校验块。但是这种情况的发生性很低。
[0022]当完成编码以后,客户端发送数据片到所有的服务器端,每次一个服务器返回写成功后,在客户端维护计数器,根据系统的配置参数,当达到可以恢复数据的不同级别,则对写失败的服务器节点不再进行重写,这样同样提高了写的性能,总体理念是尽量最小任务的写操作。
[0023]文件正常读流程:如附图3所示,当客户端收到读请求的时候,由客户端发送读指令到所有的存储服务器节点,在客户端等待接受各个存储服务器返回的数据,当客户端对返回的数据进行一致性检测和计算器的累积以后,对于优先返回的校验块进行缓存,缓存个数根据配置确定,如果后续返回所有正常的数据块,则数据块返回给用户调用,缓存的校验块丢弃。
[0024]在正常的读的流程中,优先发送读请求到正常的数据块节点,避免客户端的解码计算。
[0025]文件修复读流程:如附图4所示,当正常读的过程中发现有数据块无法读取或者根据标记位发现已经损坏,则有缓存的校验块填充,并且根据分组2+2方法,进行解码计算,得到数据后,再返回给上层调用的用户。
[0026]文件修复流程:如附图5所示,为了保证数据的安全性,集群中会存在修复进程,对所有的数据进行不间断的检查,当发现有数据丢失或者节点失效的时候,重新读取数据,解码恢复数据,然后重新写入存储服务器,修复进程对修复文件和布局都进行了详细记录,当新节点放回集群中,则由修复进程进行数据的转存。
[0027]本发明能够降低大大提高存储利用率和降低副本方式带来的低性能问题,同时降低磁盘级别的RAID成本。
[0028]以上所述仅为本发明的实施例而已,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种利用分布式数据编码的存储方法,其特征在于其具体存储过程为: 一、客户端进程接收到来自缓存的数据后,进行编码计算生成校验数据块,该校验数据块可保证在3个节点或者磁盘损坏情况下进行,即采用N+M方式,N是数据块的数目,M是校验块的数目,N为大于等于I的自然数,M为大于等于3的自然数; 二、当完成编码以后,客户端发送数据片到所有的服务器端,每次一个服务器返回写成功后,在客户端维护计数器,根据系统的配置参数,当达到可以恢复数据的不同级别,则对写失败的服务器节点不再进行重写。
2.根据权利要求1所述的一种利用分布式数据编码的存储方法,其特征在于:所述步骤一中客户端实时进行编码计算采用的为2+2分组并行高速编码方式,该方式的具体内容为:3个数据块为一组,采用两组分别编码方式形成各自的校验块数据,同时进行整个6块数据的总体编码,此时产生3个校验块,冗余度达到3。
3.根据权利要求2所述的一种利用分布式数据编码的存储方法,其特征在于:所述步骤二的详细过程为:当客户端收到读请求时,由客户端发送读指令到所有的存储服务器节点,在客户端等待接受各个存储服务器返回的数据,当客户端对返回的数据进行一致性检测和计算器的累积以后,对于优先返回的校验块进行缓存,缓存个数根据配置确定,如果后续返回所有正常的数据块,则数据块返回给用户调用,缓存的校验块丢弃; 当正常读的过程中发现有数据块无法读取或者根据标记位发现已经损坏,则由缓存的校验块填充,并且根据2+2的分组情况,进行解码计算,得到数据后,再返回给上层调用的用户。
4.根据权利要求3所述的一种利用分布式数据编码的存储方法,其特征在于:所述正常读流程中,优先发送读请求到正常的数据块节点。
5.根据权利要求1?4中任一所述的一种利用分布式数据编码的存储方法,其特征在于:所述集群中存在修复进程,该进程对所有的数据进行不间断的检查,当发现有数据丢失或者节点失效的时候,重新读取数据,解码恢复数据,然后重新写入存储服务器,修复进程对修复文件和布局都进行了详细记录,当新节点放回集群中,则由修复进程进行数据的转存。
【文档编号】G06F12/08GK103761195SQ201410009331
【公开日】2014年4月30日 申请日期:2014年1月9日 优先权日:2014年1月9日
【发明者】王欢 申请人:浪潮电子信息产业股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1