一种基于纠删码的文件存储方法和系统技术方案

技术编号:13601753 阅读:94 留言:0更新日期:2016-08-27 17:46
本发明专利技术公开了一种基于纠删码的文件存储方法和系统,其中,方法包括:接收写入文件请求;获取待写入文件的大小值K;根据预先设置的分解值Q,将待写入文件分解成至少S个子块,S=[K/Q];对至少S个子块中的每个子块进行纠删编码,使得每个子块生成L个纠删块;将所述至少S个子块中,每个子块所生成的L个纠删块分别写入不同的磁盘。本发明专利技术能够在节约存储空间、节约成本的基础之上,提升计算设备存储数据和读取数据的性能,尤其在提升读取目录、验证用户权限等操作的速度、节约文件系统的inode、提升数据迁移过程方面具有良好的效果。

【技术实现步骤摘要】

本专利技术涉及数据存储
,特别涉及一种基于纠删码的文件存储方法和系统
技术介绍
近年来,随着视频码率越来越高,视频文件也变得越来越大,对文件的存储要求也越来越高。通常用户都会对数据冗余及安全性提出要求:必须对数据进行备份,防止由于单块硬盘损坏造成数据丢失。为了满足这一要求,现有技术通常采用多副本或者纠删码的冗余存储方案。其中,多副本的方案的问题是成本过高。以最常用的三副本为例,为了存储一份数据,需要备份两个副本,这种冗余存储方案造成需要存储3倍于数据本身的量,占用大量的磁盘。纠删码的原理就是将一份数据纠删编码后形成L个纠删块,其中,L个纠删块包括D块数据块和P块校验块,L=D+P,通过任意的D块数据都可以将缺失的P块数据恢复出来。例如,在D=4,P=2的纠删码方案中,数据安全性相当于三副本(即可丢失两个副本),但是该冗余存储方案只需要存储1.5倍于数据本身的量,相比于三副本模式,节省了50%的成本。纠删码方案相比多副本方案,虽然能够节省磁盘空间,但是也存在以下问题:1.相比于多副本的冗余存储方案,纠删码会将一个完整的文件切分成非常多的较小的子块。比如,1个文件大小为4兆字节的文件,采用三副本方案,底层文件系统会存为3个4M的文件。但是采用纠删码方案(以D=4,P=2为例),底层文件系统会存为D=4,P=2的6个1M的文件。底层文件系统中的
大量小文件会让文件系统的负载加重,使得读取目录、验证用户权限等操作都会比较慢,另外,过大的文件数量可能会耗光文件系统的inode。2.当对存储集群内的磁盘进行扩容时,会将大部分写入导入到新磁盘中。这种情况下,当老磁盘数据量逐渐增多时,慢慢就会变为基本只能够响应读请求,这样会造成集群磁盘的负载严重不均衡。为使得每块磁盘的数据尽量均匀,从而充分发挥每块磁盘的带宽,数据映射机制会在扩容磁盘时,迫使数据进行一次迁移,将部分数据从老磁盘中迁入到新的磁盘。数据迁移过程中,势必需要从老磁盘中读取数据,如果大部分数据都是比较小的文件,则存在大量的随机IO,从而使得迁移过程进行的非常缓慢,影响服务的可用性。3.三副本方案中,每个副本的数据都是完全相同的,当存放一个副本的磁盘损坏时,另外两副本中的任一个写入到一个新磁盘即可。然而,在纠删码方案中,每个子块形成的纠删码都是不同的,比如前面例子提到的D=4,P=2的情况,纠删码分为(0,1,2,3,4,5)六块,(0,1,2,3)是数据块,(4,5)是校验块,每个纠删码分别存储于一个磁盘上。当存放数据块0的磁盘损坏时,管是否在坏磁盘的位置上是否有新盘插入,必须有一种数据映射机制必须保证,原有的数据不会迁移,否则数据迁移会带来大量磁盘和网络带宽的浪费。4.三副本方案中,由于每个副本的内容都是一致的,所以响应读请求时,只需任意挑选一个读取即可,但是采用纠删编码的情况下,在响应读请求时,现有技术中的读取方案需要进行优化。
技术实现思路
本专利技术的目的是:对现有技术中的纠删码方案进行改进,提供一种节约存储空间、减轻文件系统的负载、当对存储集群内的磁盘进行扩容时提高数据的迁移效率的文件存储方法和系统。根据本专利技术的一个方面,提供了一种基于纠删码的文件存储方法,包括以下步骤:接收写入文件请求;获取待写入文件的大小值K;根据预先设置的分解值Q,将待写入文件分解成至少S个子块,S=[K/Q];其中,所述S个子块中,每个子块的大小为所述分解值Q;对至少S个子块中的每个子块进行纠删编码,使得每个子块生成L个纠删块;将所述至少S个子块中,每个子块所生成的L个纠删块分别写入不同的磁盘。进一步,所述基于纠删码的文件存储方法,其中:所述分解值Q的取值范围为32兆字节到96兆字节。进一步,所述基于纠删码的文件存储方法,其中:所述分解值Q的取值范围为48兆字节到80兆字节。进一步,所述基于纠删码的文件存储方法,其中:所述分解值Q的取值为64兆字节。进一步,所述基于纠删码的文件存储方法,其中:在所述获取待写入文件的大小值K之后,还包括:当所述待写入文件的大小值K大于等于预设阈值I时,执行所述根据预先设置的分解值Q,将待写入文件分解成至少S个子块。进一步,所述基于纠删码的文件存储方法,其中:所述预设阈值I的取值范围为大于或等于512兆字节。进一步,所述基于纠删码的文件存储方法,其中:在所述将每个子块所生成的L个纠删块分别写入不同的磁盘之后,当其
中某一个磁盘损坏时,则采用以下方法对所述损害磁盘中所存储的纠删块进行迁移;根据剩余的L-1个磁盘中所存储的纠删码进行纠删解码,恢复所述损害磁盘中所存储的纠删块;根据预设的磁盘与纠删码的映射关系表,得到所述损害磁盘的位置,并将所述恢复的纠删块写入在所述损害磁盘的位置上所插入的新磁盘,或将所述恢复的纠删块写入另外的磁盘。根据本专利技术的另一个方面,提供了一种基于纠删码的文件存储系统,包括以下模块:请求接收模块,用于接收写入文件请求;文件大小获取模块,获取待写入文件的大小值K;文件分解模块,根据预先设置的分解值Q,将待写入文件分解成至少S个子块,S=[K/Q];其中,所述S个子块中,每个子块的大小为所述分解值Q;纠删编码模块,对至少S个子块中的每个子块进行纠删编码,使得每个子块生成L个纠删块;和磁盘写入模块,将所述至少S个子块中,每个子块所生成的L个纠删块分别写入不同的磁盘。进一步,所述基于纠删码的文件存储系统,其中:所述分解值Q的取值范围为32兆字节到96兆字节。进一步,所述基于纠删码的文件存储系统,其中:所述分解值Q的取值范围为48兆字节到80兆字节。进一步,所述基于纠删码的文件存储系统,其中:所述分解值Q的取值
为64兆字节。进一步,所述基于纠删码的文件存储系统,还包括:比较模块,用于判断待写入文件的大小值K是否大于等于预设阈值I,若是,则向所述文件分解模块发送分解指令。进一步,所述基于纠删码的文件存储系统,其中:所述预设阈值I的取值范围为大于或等于512兆字节。进一步,所述基于纠删码的文件存储系统,还包括:数据迁移模块,用于当存储有L个纠删块的不同的磁盘的中,某一个磁盘损坏时,根据剩余的L-1个磁盘中所存储的纠删码进行纠删解码,恢复所述损害磁盘中所存储的纠删块;根据预设的磁盘与纠删码的映射关系表,得到所述损害磁盘的位置,并将所述恢复的纠删块写入在所述损害磁盘的位置上所插入的新磁盘,或将所述恢复的纠删块写入另外的磁盘。本专利技术在提升读取目录、验证用户权限等操作的速度、节约文件系统的inode、提升数据迁移过程方面具有良好的效果。附图说明图1是本专利技术基于纠删码的文件存储方法流程图;图2是本专利技术基于纠删码的文件存储系统的模块关系示意图。具体实施方式为使本专利技术的目的、技术方案和优点更加清楚明了,下面结合具体实施方式并参照附图,对本专利技术进一步详细说明。应该理解,这些描述只是示例性的,而并非要限制本专利技术的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本专利技术的概念。图1是本专利技术基于纠删码的文件存储方法流程图。如图1所示,基于纠删码的文件存储方法包括以下步骤:步骤S1,接收写入文件请求。当客户端有存储文件的需求时,向服务器发送写入文件请求,服务器接收写入文件请求。文件包括文字、图片本文档来自技高网
...

【技术保护点】
一种基于纠删码的文件存储方法,包括:接收写入文件请求;获取待写入文件的大小值K;根据预先设置的分解值Q,将待写入文件分解成至少S个子块,S=[K/Q];其中,所述S个子块中,每个子块的大小为所述分解值Q;对至少S个子块中的每个子块进行纠删编码,使得每个子块生成L个纠删块;将所述至少S个子块中,每个子块所生成的L个纠删块分别写入不同的磁盘。

【技术特征摘要】
1.一种基于纠删码的文件存储方法,包括:接收写入文件请求;获取待写入文件的大小值K;根据预先设置的分解值Q,将待写入文件分解成至少S个子块,S=[K/Q];其中,所述S个子块中,每个子块的大小为所述分解值Q;对至少S个子块中的每个子块进行纠删编码,使得每个子块生成L个纠删块;将所述至少S个子块中,每个子块所生成的L个纠删块分别写入不同的磁盘。2.根据权利要求1所述的方法,其中:所述分解值Q的取值范围为32兆字节到96兆字节。3.根据权利要求2所述的方法,其中:所述分解值Q的取值范围为48兆字节到80兆字节。4.根据权利要求3所述的方法,其中:所述分解值Q的取值为64兆字节。5.根据权利要求1-4任一项所述的方法,其中:在所述获取待写入文件的大小值K之后,还包括:当所述待写入文件的大小值K大于等于预设阈值I时,执行所述根据预先设置的分解值Q,将待写入文件分解成至少S个子块。6.根据权利要求5所述的方法,其中:所述预设阈值I的取值范围为大于或等于512兆字节。7.根据权利要求1-6任一项所述的方法,其中:在所述将每个子块所生成的L个纠删块分别写入不同的磁盘之后,当其中某一个磁盘损坏时,则采用以下方法对所述损害磁盘中所存储的纠删块进行迁移;根据剩余的L-1个磁盘中所存储的纠删码进行纠删解码,恢复所述损害磁盘中所存储的纠删块;根据预设的磁盘与纠删码的映射关系表,得到所述损害磁盘的位置,并将所述恢复的纠删块写入在所述损害磁盘的位置上所插入的新磁盘,或将所述恢复的纠删块写入另外的磁...

【专利技术属性】
技术研发人员:吴兴义
申请(专利权)人:乐视控股北京有限公司乐视云计算有限公司
类型:发明
国别省市:北京;11

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

1