本发明涉及数据存储技术,尤其涉及文件分布式存储系统、方法、装置及电子设备。
背景技术:
随着企业系统各种数据的飞速增长以及日积月累的存量数据,单纯通过scaleup(纵向扩展)方式利用现有的存储系统,通过不断增加存储容量来满足数据增长的需求,而带宽和计算能力并没有相应的增加。所以,整个存储系统很快就会达到性能瓶颈,需要继续扩展。
为了解决以上问题传统方式有两种方法:一是采用更强性能的存储引擎(emc的clarion系统和netapp的fas系列,采用增加控制器cpu或内存的方式来提供更强的性能),但是这种方式问题在于价格昂贵;另外一种方法是额外购买的独立的存储系统,这样又会增加管理的复杂度且价格也比较昂贵。
技术实现要素:
为了克服现有技术的不足,本发明的目的之一在于提供文件分布式存储系统,其能解决现有技术存储复杂、价格昂贵的问题。
本发明的目的之二在于提供文件分布式存储方法,其能解决现有技术存储复杂、价格昂贵的问题。
本发明的目的之三在于提供文件分布式存储装置,其能解决现有技术存储复杂、价格昂贵的问题。
本发明的目的之四在于提供一种电子设备,其能解决现有技术存储复杂、价格昂贵的问题。
本发明的目的之一采用以下技术方案实现:
文件分布式存储系统,包括api接口、主命名空间、副命名空间、多个数据存储单元,所述副命名空间与主命名空间连接,多个数据存储单元均与主命名空间连接,api接口与主命名空间连接;
所述aip接口用于访问文件分布式存储系统,主命名空间用于接收并处理文件读写请求,并根据读写请求从数据存储单元读取数据块或写入数据块至数据存储单元。
本发明的目的之二采用以下技术方案实现:
文件分布式存储方法,包括如下步骤:
接收文件读取请求,所述文件读取请求包括文件的位置列表信息;
根据所述文件的位置列表信息分别从对应的数据存储单元中读取相应的数据块,并将读取的各数据块处理为完整数据;
接收文件的写入请求,所述文件写入请求包括文件的大小以及文件的完整数据;
根据所述文件的大小以及预设规则将所述完整数据分割为至少一个数据块;
给每一个数据块分配存储位置信息,以得到所述完整数据对应的位置列表信息;
将每一个数据块存储至存储位置信息相应的数据存储单元。
优选的,“将读取的各数据块处理为完整数据”具体是对各所述数据块进行解码,并合并为完整数据。
优选的,执行完“将所述完整数据分割为至少一个数据块”后以及执行“给每一个数据块分配存储位置信息”之前,还对每一个分割后的数据块进行封包编码。
优选的,数据存储单元对接收到的数据块进行解码,并校验解码后的数据块的完整性,当判定该数据块完整后保存该数据块。
优选的,根据预设规则判断文件的大小小于阈值,则定义该文件为小文件,并分配所述小文件对应的密钥。
本发明的目的之三采用以下技术方案实现:
文件分布式存储装置,包括如下单元:
读取请求单元:被配置于接收文件读取请求,所述文件读取请求包括文件的位置列表信息;
读取处理单元:被配置为根据所述文件的位置列表信息分别从对应的数据存储单元中读取相应的数据块,并将读取的各数据块处理为完整数据;
写入请求单元:被配置于接收文件的写入请求,所述文件写入请求包括文件的大小以及文件的完整数据;
数据分割单元:被配置于根据所述文件的大小以及预设规则将所述完整数据分割为至少一个数据块;
存储分配单元:被配置于给每一个数据块分配存储位置信息,以得到所述完整数据对应的位置列表信息;
数据存储单元:被配置于将每一个数据块存储至存储位置信息相应的数据存储单元。
本发明的目的之四采用以下技术方案实现:
一种电子设备,其上存储有处理器、存储器以及存储在存储器中并可被处理器执行的计算机可读程序,所述计算机可读程序被处理器执行时,实现如下步骤:
接收文件读取请求,所述文件读取请求包括文件的位置列表信息;
根据所述文件的位置列表信息分别从对应的数据存储单元中读取相应的数据块,并将读取的各数据块处理为完整数据;
接收文件的写入请求,所述文件写入请求包括文件的大小以及文件的完整数据;
根据所述文件的大小以及预设规则将所述完整数据分割为至少一个数据块;
给每一个数据块分配存储位置信息,以得到所述完整数据对应的位置列表信息;
将每一个数据块存储至存储位置信息相应的数据存储单元。
相比现有技术,本发明的有益效果在于:
本发明提供一种弹性的分布式存储系统,将固定于某个节点的文件系统,扩展到任意多个节点,每个存储节点均可被读写,有效解决数据的存储难题。
附图说明
图1为本发明的文件分布式存储系统的模块结构图;
图2为本发明的文件分布式存储方法的流程图。
具体实施方式
下面,结合附图以及具体实施方式,对本发明做进一步描述:
如图1所示,本发明提供一种文件分布式存储系统,包括文件分布式存储系统,其特征在于,包括api接口、主命名空间、副命名空间、多个数据存储单元,所述副命名空间与主命名空间连接,多个数据存储单元均与主命名空间连接,api接口与主命名空间连接;
所述aip接口用于访问文件分布式存储系统,主命名空间用于接收并处理文件读写请求,并根据读写请求从数据存储单元读取数据块或写入数据块至数据存储单元。
本发明的四个模块之间使用高扩展性、高性能的nio网络框架进行信息交互。主命名空间维护着整个系统目录树及目录下所有的文件,执行副本策略,监控数据存储单元的状态,接受并处理通过api接口进来的请求。副命名空间是主命名空间的冷备份,防止单点风险,当主命名空间无法正常工作,将代替主命名空间进行工作。数据存储单元根据需要存储并检索数据块,并周期性的向主命名空间发送它们的心跳信息。
如图2所示,本发明还提供一种文件分布式存储方法,包括如下步骤:
s1:接收文件读取请求,所述文件读取请求包括文件的位置列表信息;
s2:根据所述文件的位置列表信息分别从对应的数据存储单元中读取相应的数据块,并将读取的各数据块处理为完整数据;
s3:接收文件的写入请求,所述文件写入请求包括文件的大小以及文件的完整数据;
s4:根据所述文件的大小以及预设规则将所述完整数据分割为至少一个数据块;
s5:给每一个数据块分配存储位置信息,以得到所述完整数据对应的位置列表信息;
s6:将每一个数据块存储至存储位置信息相应的数据存储单元。
进一步优选的,“将读取的各数据块处理为完整数据”具体是对各所述数据块进行解码,并合并为完整数据。
进一步优选的实施方式,执行完“将所述完整数据分割为至少一个数据块”后以及执行“给每一个数据块分配存储位置信息”之前,还对每一个分割后的数据块进行封包编码。
其中,数据存储单元对接收到的数据块进行解码,并校验解码后的数据块的完整性,当判定该数据块完整后保存该数据块。根据预设规则判断文件的大小小于阈值,则定义该文件为小文件,并分配所述小文件对应的密钥。
上述步骤流程可以划分为大文件的读取过程和写入过程,小文件的读取过程和写入过程。
具体的,针对大文件的读取过程,通过api接口向主命名空间发送文件读取请求,获取文件对应的数据块位置列表信息,根据数据块位置列表信息从各个数据存储单元读取数据块,将各数据块解码合并获得文件的完整数据。
针对大文件的写入过程,根据预设规则,也即是系统配置的数据块的大小,将大文件切割成多个数据块,切割后的数据块大小符合系统配置的数据块大小,对切割后的数据块逐个进行封包编码。向主命名空间发送写入请求,主命名空间为数据块分配存储位置信息,根据所示存储位置信息,将数据块传输到对应的数据存储单元进行保存。数据存储单元接收到数据块后,进行解码,然后校验数据块的完整性,再进行保存,并反馈保存结构给主命名空间。
针对小文件的读取过程,向主命名空间发送读取请求,获取对应的存储位置信息,根据存储位置信息从指定节点读取小文件的数据,将数据块解码获得完整数据。
针对小文件的写入过程,发送写入请求,对数据块进行封包编码,主命名空间给小文件分配密钥和存储位置信息,根据存储位置信息,将小文件的数据块传输至对应的数据存储单元进行保存。数据存储单元对数据块进行解码,然后校验完整性,确保完整后再进行保存。
本发明还提供文件分布式存储装置,包括如下单元:
读取请求单元:被配置于接收文件读取请求,所述文件读取请求包括文件的位置列表信息;
读取处理单元:被配置为根据所述文件的位置列表信息分别从对应的数据存储单元中读取相应的数据块,并将读取的各数据块处理为完整数据;
写入请求单元:被配置于接收文件的写入请求,所述文件写入请求包括文件的大小以及文件的完整数据;
数据分割单元:被配置于根据所述文件的大小以及预设规则将所述完整数据分割为至少一个数据块;
存储分配单元:被配置于给每一个数据块分配存储位置信息,以得到所述完整数据对应的位置列表信息;
数据存储单元:被配置于将每一个数据块存储至存储位置信息相应的数据存储单元。
本发明还提供一种电子设备,其上存储有处理器、存储器以及存储在存储器中并可被处理器执行的计算机可读程序,其特征在于,所述计算机可读程序被处理器执行时,实现如下步骤:
接收文件读取请求,所述文件读取请求包括文件的位置列表信息;
根据所述文件的位置列表信息分别从对应的数据存储单元中读取相应的数据块,并将读取的各数据块处理为完整数据;
接收文件的写入请求,所述文件写入请求包括文件的大小以及文件的完整数据;
根据所述文件的大小以及预设规则将所述完整数据分割为至少一个数据块;
给每一个数据块分配存储位置信息,以得到所述完整数据对应的位置列表信息;
将每一个数据块存储至存储位置信息相应的数据存储单元。
对本领域的技术人员来说,可根据以上描述的技术方案以及构思,做出其它各种相应的改变以及形变,而所有的这些改变以及形变都应该属于本发明权利要求的保护范围之内。