数据存储方法及系统技术方案

技术编号:7194606 阅读:233 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种数据存储方法及系统。该方法包括:文件访问客户端根据元数据服务器选定的数据块服务器位置,向相应的数据块服务器发送原始数据、原始数据的数据块句柄、以及原始数据的字节范围;数据块服务器根据字节范围对原始数据进行里所RS编码,并将原始数据、以及数据块句柄写入到存储媒介,保存为信息数据文件;对进行RS编码后获取的冗余数据进行封装,获取冗余数据文件句柄,并将封装后的冗余数据、以及冗余数据文件句柄写入存储媒介,保存为冗余数据文件。借助于本发明专利技术的技术方案,能够有效提高分布式文件系统的容错能力的同时减少了存储设备的数量,降低了成本。

【技术实现步骤摘要】

本专利技术涉及计算机领域,特别是涉及一种数据存储方法及系统
技术介绍
在现有技术中,随着多媒体产业的迅猛发展,出于成本、可靠性等多方面的考虑, 越来越多的厂商选择在产品中部署自研的分布式存储系统,使得分布式文件系统也因此得到了快速的发展。在现有的分布式文件系统架构中,文件一般都被分割成多个数据块进行存储;为了保证系统的健壮性及灾难恢复能力,数据块一般又会有多个备份,并分别存放于不同的物理位置,因此需要配置更多的存储设备,从而增加了设备的成本;在数据写入存储设备、 从存储设备上读取数据、或者在数据传输的过程中,都可能发生部分数据出错;此外,保存在存储介质上的数据也可能发生损坏,从而导致数据不可用,从而减低了数据存储的可靠性,特别是在数据存储可靠性要求较高的系统中,数据存储可靠性低的问题显得尤为突出。
技术实现思路
本专利技术提供一种数据存储方法及系统,以解决现有技术中数据存储可靠性低的问题。本专利技术提供一种数据存储方法,包括文件访问客户端根据元数据服务器选定的数据块服务器位置,向相应的数据块服务器发送原始数据、原始数据的数据块句柄、以及原始数据的字节范围;数据块服务器根据字节范围对原始数据进行里所RS编码,并将原始数据、以及数据块句柄写入到存储媒介,保存为信息数据文件;对进行RS编码后获取的冗余数据进行封装,获取冗余数据文件句柄,并将封装后的冗余数据、以及冗余数据文件句柄写入存储媒介,保存为冗余数据文件。优选地,上述方法还包括在用户读取原始数据时,文件访问客户端根据元数据服务器指定的数据块服务器位置,向数据块服务器发送数据读取请求,其中,请求中携带有数据块句柄、以及字节范围;数据块服务器根据数据块句柄、以及字节范围,从存储媒介中读取信息数据文件,获取原始数据;读取与信息数据文件相对应的冗余数据文件,对冗余数据文件进行解封装,获取冗余数据;对冗余数据以及原始数据进行RS解码,并将RS解码后的纠错数据发送给文件访问客户端。优选地,数据块服务器根据字节范围对原始数据进行里所RS编码具体包括从原始数据的第一个字节开始,将原始数据以k字节单位分割成多个数据段,如果最后一个数据段的长度小于k字节,则使用0进行填充,使最后一个数据段的长度等于k字节;分别对每一个k字节的数据段进行RS编码,获取多个m字节的冗余数据,并将多个m字节的冗余数据保存在数据块服务器的缓存中。 优选地,对进行RS编码后获取的冗余数据进行封装,获取冗余数据文件句柄具体包括从数据块服务器的缓存中读取多个m字节的冗余数据,将开始标识符插入到每一个m 字节的冗余数据的第一个字节之前,将结束标识符插入到每一个m字节的冗余数据的最后一个字节之后,获取封装后的冗余数据;根据数据块名称构造冗余数据文件名称,并根据冗余数据文件名称获取冗余数据文件句柄。优选地,对冗余数据文件进行解封装具体包括分别根据开始标识符和结束标识符读取封装后的冗余数据,获取多个m字节的冗余数据。优选地,对冗余数据以及原始数据进行RS解码具体包括从原始数据的第一个字节开始,每次读取k字节数据,从冗余数据的第一个字节开始,每次读取m字节数据,对η字节的原始数据和冗余数据进行RS纠错解码,每次生成k字节的纠错数据,直到处理完原始数据,其中,η = k+m ;如果η个字节中发生错误的字节超过m/2个,则在数据块服务器中记录RS纠错解码错误日志;如果最后一段需要解码的原始数据的长度小于k字节,则只对最后一段原始数据中对应的字节进行RS纠错解码运算。本专利技术还提供了一种数据存储系统,包括元数据服务器,用于管理系统内所有文件的元数据信息,向文件访问客户端提供选定的数据块服务器位置,并向文件访问客户端提供元数据信息操作接口 ;文件访问客户端,用于根据元数据服务器选定的数据块服务器位置,向相应的数据块服务器发送原始数据、原始数据的数据块句柄、以及原始数据的字节范围;数据块服务器,用于根据字节范围对原始数据进行里所(Reed-solomon,简称为 RS)编码,并将原始数据、以及数据块句柄写入到存储媒介,保存为信息数据文件;对进行 RS编码后获取的冗余数据进行封装,获取冗余数据文件句柄,并将封装后的冗余数据、以及冗余数据文件句柄写入存储媒介,保存为冗余数据文件。优选地,文件访问客户端进一步用于在用户读取原始数据时,根据元数据服务器指定的数据块服务器位置,向数据块服务器发送数据读取请求,并将数据块服务器返回的纠错数据发送给用户,其中,请求中携带有数据块句柄、以及字节范围;数据块服务器进一步用于根据数据块句柄、以及字节范围,从存储媒介中读取信息数据文件,获取原始数据; 读取与信息数据文件相对应的冗余数据文件,对冗余数据文件进行解封装,获取冗余数据; 对冗余数据以及原始数据进行RS解码,并将RS解码后的纠错数据发送给文件访问客户端。优选地,数据块服务器具体包括RS编码模块,用于从原始数据的第一个字节开始,将原始数据以k字节单位分割成多个数据段,如果最后一个数据段的长度小于k字节, 则使用0进行填充,使最后一个数据段的长度等于k字节;分别对每一个k字节的数据段进行RS编码,获取多个m字节的冗余数据,并将多个m字节的冗余数据保存在数据块服务器的缓存中;封装模块,用于从缓存中读取多个m字节的冗余数据,将开始标识符插入到每一个m字节的冗余数据的第一个字节之前,将结束标识符插入到每一个m字节的冗余数据的最后一个字节之后,获取封装后的冗余数据;构造模块,用于根据数据块名称构造冗余数据文件名称,并根据冗余数据文件名称获取冗余数据文件句柄。优选地,数据块服务器具体包括解封装模块,用于分别根据开始标识符和结束标识符读取封装后的冗余数据,获取多个m字节的冗余数据;RS解码模块,用于从原始数据的第一个字节开始,每次读取k字节数据,从冗余数据的第一个字节开始,每次读取m字节数据,对η字节的原始数据和冗余数据进行RS纠错解码,每次生成k字节的纠错数据,直到处理完原始数据,其中,η = k+m;如果η个字节中发生错误的字节超过m/2个,则在数据块服务器中记录RS纠错解码错误日志;如果最后一段需要解码的原始数据的长度小于k字节, 则只对最后一段原始数据中对应的字节进行RS纠错解码运算。本专利技术有益效果如下通过使用具有很强的检错和纠错能力的RS码对数据进行编码,解决了现有技术中数据存储可靠性低的问题,能够有效提高分布式文件系统的容错能力的同时减少了存储设备的数量,降低了成本。附图说明图1是本专利技术实施例的数据存储方法的流程图;图2是本专利技术实施例的数据存储的系统架构图;图3是本专利技术实施例的写数据的操作示意图;图4是本专利技术实施例的冗余数据封装的操作示意图;图5是本专利技术实施例的读文件的操作示意图;图6是本专利技术实施例的数据存储系统的结构示意图。具体实施例方式为了解决现有技术中数据存储可靠性低的问题,本专利技术提供了一种数据存储方法及系统,特别适用于对数据存储可靠性要求高、对存储容量要求高的应用场景,以下结合附图以及实施例,对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本专利技术,并不限定本专利技术。方法实施例根据本专利技术的实施例,提供了一种数据存储方法,图1是本专利技术实施例的数据存储方法的流程图,如图1所示,根据本专利技术实施例的数据存储方法包括如本文档来自技高网...

【技术保护点】
1.一种数据存储方法,其特征在于,包括:文件访问客户端根据元数据服务器选定的数据块服务器位置,向相应的数据块服务器发送原始数据、所述原始数据的数据块句柄、以及所述原始数据的字节范围;所述数据块服务器根据所述字节范围对所述原始数据进行里所RS编码,并将所述原始数据、以及所述数据块句柄写入到存储媒介,保存为信息数据文件;对进行RS编码后获取的冗余数据进行封装,获取冗余数据文件句柄,并将封装后的所述冗余数据、以及所述冗余数据文件句柄写入所述存储媒介,保存为冗余数据文件。

【技术特征摘要】

【专利技术属性】
技术研发人员:雷靖刘澍肖蓉
申请(专利权)人:中兴通讯股份有限公司
类型:发明
国别省市:94

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

1