数据存储系统和数据读写方法技术方案

技术编号:14153368 阅读:85 留言:0更新日期:2016-12-11 16:54
本发明专利技术公开了一种数据存储系统,包括中心节点和去重节点;所述中心节点用于根据预设策略将每个Bucket分配到对应的去重节点,根据Bucket与去重节点的对应关系创建路由表,并同步所述路由表到每个去重节点;所述去重节点用于根据所述路由表,存储每个所述分配到的Bucket所对应的指纹信息和所述指纹信息代表的数据块。实现了对100PB以上级别的原始数据以及100TB以上级别的指纹信息的全局去重存储管理。

【技术实现步骤摘要】

本专利技术属于互联网
,具体地说,涉及一种数据存储方法、数据存储系统和数据读写方法、用于数据读写的客户端及用于数据读写的系统。
技术介绍
近年来互联网公司需要备份、归档的数据呈爆发趋势。出于成本的考虑,磁带一直是备份和归档系统以及虚拟机主存储系统的主要存储介质。但是磁带的存放环境要求高而寿命又较短,一般每隔4-5年就需要转存到新的磁带上。当磁带的数量累计到几万甚至几十万后,转存工作将成为一场梦魇。随着磁盘技术的发展,容量已经达到了6T甚至8T,其容量价格比逐渐与磁带接近,而且磁盘相对磁带的优势是支持随机访问,这使得重复数据删除技术的应用成为可能,通过结合磁盘技术和重复数据删除技术,可以大大节约备份归档的成本。目前市场上已有的重复数据删除商用产品,比如EMC DD990、HP StoreOnce B6200设备、SEPATON DeltaStor软件等等,基本属于单机模式,可伸缩性非常有限,最大可用容量1.6PB,最大的吞吐量31TB/h(8.8G/s),无论从容量还是性能上,根本无法满足互联网公司的存储需求。中国科学院计算技术研究所的《一种支持海量数据备份的可扩展分布式重复数据删除系统》,针对单机模式的不足,在去重系统的扩展性和去重效率这两个方面提出了分布式布隆过滤器(bloomfilter)用于分布式去重系统中去重节点的数据路由,并提出了基于取样机制的指纹查询用以提高指纹查询速度,实现了分布式重复数据删除系统3D-deduper。
以下简称为方案一。EMC公司也在其单机(single-node)模式的基础上研发了集群化去重存储系统(cluster deduplication storage system)。其做法是增加几台备份服务器,负责对数据流进行切块、计算数据块的指纹,然后打包成一个超级块(super chunk)并根据一定的策略路由到某个去重节点进行处理。以下简称方案二。以上两种方案从严格意义来讲,不能称为分布式系统,而是集群系统。集群系统的基本思路是在多个可靠的单节点之间进行任务的负载均衡。而分布式系统的基本思路是在多个不可靠的单节点之间进行数据分布(当数据分布均衡,则自然实现了任务的负载均衡),并且利用多副本或者校验码等手段来保障可靠性。在上述两个方案中,集群系统的指纹库是分散管理的,虽然采用了一定的措施尽量将之前出现过的数据块及其指纹路由到之前负责处理的去重节点上,但是难以避免被路由到一个从未处理该数据块的去重节点上,从而被误判为新的数据块并被重复保存。方案一更是对指纹采用了基于采样的稀疏索引,进一步加重了数据块被误判的概率。哪怕只有2%的误判,对于100PB甚至更大数量级的系统来说,也是不可接受的。
技术实现思路
有鉴于此,本申请提供一种数据存储方法、数据存储系统和数据读写方法、用于数据读写的客户端及用于数据读写的系统,解决了在大数量级的去重系统中由于指纹信息的分散管理而造成的误判概率较大的技术问题。为了解决上述技术问题,本申请公开了一种数据存储方法,应用于包括中心节点和去重节点的数据存储系统;所述数据存储方法,包括:所述中心节点根据预设策略将每个桶(Bucket)分配到对应的去重节点;所述中心节点根据Bucket与去重节点的对应关系创建路由表,并同步所述路由表到每个去重节点;所述去重节点根据所述路由表,存储每个所述分配到的Bucket所对应的指纹信息和所述指纹信息代表的数据块。所述去重节点根据所述路由表,存储每个所述分配到的Bucket所对应的指纹信息和所述指纹信息代表的数据块包括:所述去重节点为每个所述分配到的Bucket分别创建对应的容器(Container)文件;所述去重节点在每个所述分配到的Bucket中保存对应的指纹信息,在与每个所述分配到的Bucket对应的Container文件中保存所述指纹信息代表的数据块。所述去重节点判断所述Container文件的大小是否大于预设阈值;当所述Container文件的大小大于预设阈值时,所述去重节点将所述Container文件归档至后台服务器。所述中心节点根据预设策略将每个Bucket分配给对应的去重节点包括:所述中心节点将每个Bucket分配到多个对应的去重节点,在所述多个对应的去重节点中确定一个主节点和至少一个备用节点。所述中心节点判断每个去重节点是否可用,或者是否增加了新的去重节点;当判断出某个去重节点不可用,或者增加了新的去重节点时,所述中心节点重新分配所述每个Bucket;所述中心节点更新所述路由表并同步到每个去重节点;所述去重节点根据所述更新后的路由表进行数据迁移。所述去重节点根据所述更新后的路由表进行数据迁移包括:所述主节点根据所述更新后的路由表发起所述数据迁移。所述当判断出某个去重节点不可用时,所述中心节点重新分配所述每个Bucket包括:当判断出所述主节点不可用时,所述中心节点从所述至少一个备用节点中重新确定出一个主节点;所述去重节点根据所述更新后的路由表进行数据迁移包括:所述重新确定的主节点根据所述更新后的路由表发起所述数据迁移。每个所述去重节点包括一个指纹信息库,所述指纹信息库是存储于固态硬盘上的布谷鸟哈希映射表,包括所述去重节点的每个Bucket所对应的指纹信息和所述指纹信息代表的数据块的存储信息。所述固态硬盘上同时运行M个布谷鸟哈希映射表,并同时使用N个布谷鸟哈希函数;其中,M×N=128。所述固态硬盘上同时运行32个布谷鸟哈希映射表,并同时使用4路布
谷鸟哈希函数。为了解决上述技术问题,本申请还公开了一种数据读写方法,包括:将数据切分为多个数据块并分别计算每个数据块的指纹信息;确定所述每个数据块的指纹信息所对应的Bucket;根据从中心节点获取的路由表,确定与所述Bucket对应的去重节点;发送指纹查询请求至与所述Bucket对应的去重节点,所述指纹查询请求包括数据块的指纹信息;接收到与所述Bucket对应的去重节点返回的未查询到的指纹信息;上传所述未查询到的指纹信息及其代表的数据块至与所述Bucket对应的去重节点。所述确定所述每个数据块的指纹信息所对应的Bucket包括:将所述指纹信息与所述Bucket的总数量进行取模运算,根据所述取模运算的结果确定所述指纹信息所对应的Bucket。所述方法还包括:当所述未查询到的指纹信息及其代表的数据块全部上传完毕时,上传所述数据的映射文件至去重节点,所述映射文件包括所述数据的每个数据块的指纹信息,所述每个数据块的指纹信息按照数据块的切分顺序排列。所述上传所述数据的映射文件至去重节点,包括:将所述映射文件切分为多个数据块并分别计算映射文件的数据块的哈希值;确定所述映射文件的数据块的哈希值所对应的Bucket;根据所述路由表确定与所述映射文件的数据块的哈希值对应的Bucket所对应的去重节点;上传所述映射文件的数据块和相应的哈希值至与所述映射文件的数据块的哈希值对应的Bucket所对应的去重节点。所述将所述映射文件切分为多个数据块包括:将所述映射文件的头信息切分为所述多个数据块中的第一个数据块;所述映射文件的头信息包括所述映射文件的总大小、所述多个数据块的总数量等信息。所述方法还包括:从去重节点获取所述数据的映射文件;根据所述映射文本文档来自技高网
...
数据存储系统和数据读写方法

【技术保护点】
一种数据存储方法,其特征在于,应用于包括中心节点和去重节点的数据存储系统,所述数据存储方法,包括:所述中心节点根据预设策略将每个桶(Bucket)分配到对应的去重节点;所述中心节点根据Bucket与去重节点的对应关系创建路由表,并同步所述路由表到每个去重节点;所述去重节点根据所述路由表,存储每个所述分配到的Bucket所对应的指纹信息和所述指纹信息代表的数据块。

【技术特征摘要】
1.一种数据存储方法,其特征在于,应用于包括中心节点和去重节点的数据存储系统,所述数据存储方法,包括:所述中心节点根据预设策略将每个桶(Bucket)分配到对应的去重节点;所述中心节点根据Bucket与去重节点的对应关系创建路由表,并同步所述路由表到每个去重节点;所述去重节点根据所述路由表,存储每个所述分配到的Bucket所对应的指纹信息和所述指纹信息代表的数据块。2.如权利要求1所述的数据存储方法,其特征在于,所述去重节点根据所述路由表,存储每个所述分配到的Bucket所对应的指纹信息和所述指纹信息代表的数据块,包括:所述去重节点为每个所述分配到的Bucket分别创建对应的容器(Container)文件;所述去重节点在每个所述分配到的Bucket中保存对应的指纹信息,在与每个所述分配到的Bucket对应的Container文件中保存所述指纹信息代表的数据块。3.如权利要求2所述的数据存储方法,其特征在于,所述去重节点判断所述Container文件的大小是否大于预设阈值;当所述Container文件的大小大于预设阈值时,所述去重节点将所述Container文件归档至后台服务器。4.如权利要求1所述的数据存储方法,其特征在于,所述中心节点根据预设策略将每个Bucket分配给对应的去重节点,包括:所述中心节点将每个Bucket分配到多个对应的去重节点,在所述多个对应的去重节点中确定一个主节点和至少一个备用节点。5.如权利要求1或4所述的数据存储方法,其特征在于,所述中心节点判断每个去重节点是否可用,或者是否增加了新的去重节点;当判断出某个去重节点不可用,或者增加了新的去重节点时,所述中心节点重新分配所述每个Bucket;所述中心节点更新所述路由表并同步到每个去重节点;所述去重节点根据所述更新后的路由表进行数据迁移。6.如权利要求5所述的数据存储方法,其特征在于,所述去重节点根据所述更新后的路由表进行数据迁移,包括:所述主节点根据所述更新后的路由表发起所述数据迁移。7.如权利要求5所述的数据存储方法,其特征在于,所述当判断出某个去重节点不可用时,所述中心节点重新分配所述每个Bucket,包括:当判断出所述主节点不可用时,所述中心节点从所述至少一个备用节点中重新确定出一个主节点;所述去重节点根据所述更新后的路由表进行数据迁移包括:所述重新确定的主节点根据所述更新后的路由表发起所述数据迁移。8.如权利要求1所述的数据存储方法,其特征在于,每个所述去重节点包括一个指纹信息库,所述指纹信息库是存储于固态硬盘上的布谷鸟哈希映射表,包括所述去重节点的每个Bucket所对应的指纹信息和所述指纹信息代表的数据块的存储信息。9.如权利要求8所述的数据存储方法,其特征在于,所述固态硬盘上同时运行M个布谷鸟哈希映射表,并同时使用N个布谷鸟哈希函数;其中,M×N=128。10.如权利要求9所述的数据存储方法,其特征在于,所述固态硬盘上同时运行32个布谷鸟哈希映射表,并同时使用4路布谷鸟哈希函数。11.一种数据读写方法,其特征在于,包括:将数据切分为多个数据块并分别计算每个数据块的指纹信息;确定所述每个数据块的指纹信息所对应的Bucket;根据从中心节点获取的路由表,确定与所述Bucket对应的去重节点;发送指纹查询请求至与所述Bucket对应的去重节点,所述指纹查询请求
\t包括数据块的指纹信息;接收到与所述Bucket对应的去重节点返回的未查询到的指纹信息;上传所述未查询到的指纹信息及其代表的数据块至与所述Bucket对应的去重节点。12.如权利要求11所述的方法,其特征在于,所述确定所述每个数据块的指纹信息所对应的Bucket包括:将所述指纹信息与所述Bucket的总数量进行取模运算,根据所述取模运算的结果确定所述指纹信息所对应的Bucket。13.如权利要求11所述的方法,其特征在于,所述方法还包括:当所述未查询到的指纹信息及其代表的数据块全部上传完毕时,上传所述数据的映射文件至去重节点,所述映射文件包括所述数据的每个数据块的指纹信息,所述每个数据块的指纹信息按照数据块的切分顺序排列。14.如权利要求13所述的方法,其特征在于,所述上传所述数据的映射文件至去重节点,包括:将所述映射文件切分为多个数据块并分别计算映射文件的数据块的哈希值;确定所述映射文件的数据块的哈希值所对应的Bucket;根据所述路由表确定与所述映射文件的数据块的哈希值对应的Bucket所对应的去重节点;上传所述映射文件的数据块和相应的哈希值至与所述映射文件的数据块的哈希值对应的Bucket所对应的去重节点。15.如权利要求14所述的方法,其特征在于,所述将所述映射文件切分为多个数据块包括:将所述映射文件的头信息切分为所述多个数据块中的第一个数据块;所述映射文件的头信息包括所述映射文件的大小、所述多个数据块的总数量等信息。16.如权利要求13所述的方法,其特征在于,所述方法还包括:从去重节点获取所述数据的映射文件;根据所述映射文件中的指纹信息从去重节点获取所述数据的每个数据块;按照所述每个数据块的指纹信息在所述映射文件中的顺序拼接出所述数据。17.如权利要求16所述的方法,其特征在于,所述从去重节点获取所述数据的映射文件包括:根据所述映射文件的名称和数据块序号从去重节点获取所述映射文件的每个数据块;将所述映射文件的每个数据块拼接为所述数据的映射文件。18.如权利要求11所述的方法,其特征在于,所述根据从中心节点获取的路由表,确定与所述Bucket对应的去重节点包括:当首次存储数据时,从所述中心节点获取路由表;根据从中心节点获取的路由表,确定与所述Bucket对应的去重节点。19.如权利要求18所述的方法,其特征在于,所述根据从中心节点获取的路由表,确定与所述Bucket对应的去重节点还包括:发送请求包至与所述Bucket对应的去重节点;接收与所述Bucket对应的去重节点返回的响应包,所述响应包包括路由表的版本信息;判断所述响应包中的路由表的版本信息与所述从中心节点获取的路由表的版本信息是否相同;当所述响应包中的路由表的版本信息与所述与从中心节点获取的路由表的版本信息相...

【专利技术属性】
技术研发人员:蒋雄伟吴锐李勇
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛;KY

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1