一种数据存储方法及装置转让专利

申请号 : CN201611109787.0

文献号 : CN106528349B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 孔军

申请人 : 郑州云海信息技术有限公司

摘要 :

本发明提供了一种数据存储方法及装置。该方法包括:将当前数据切分成至少两个数据块,还包括:将所述至少两个数据块写入至少两个磁盘中;针对每一个磁盘均执行:判断所述磁盘对应的原始日志文件中,当前写入日志语句的写入时长是否达到设定的时长阈值,若是,则确定所述磁盘为故障磁盘,并在所述至少两个磁盘中,选取所述故障磁盘对应的备份磁盘;将所述当前写入日志语句对应的当前写入数据块重新写入所述备份磁盘中。本发明提供的方案可以减少数据丢失。

权利要求 :

1.一种数据存储方法,其特征在于,将当前数据切分成至少两个数据块,还包括:将所述至少两个数据块写入至少两个磁盘中;

针对每一个磁盘均执行:

判断所述磁盘对应的原始日志文件中,当前写入日志语句的写入时长是否达到设定的时长阈值,若是,则,确定所述磁盘为故障磁盘,并在所述至少两个磁盘中,选取所述故障磁盘对应的备份磁盘;

将所述当前写入日志语句对应的当前写入数据块重新写入所述备份磁盘中;

所述将所述至少两个数据块写入至少两个磁盘中,包括:利用下述第一公式,计算所述至少两个数据块对应的至少两个校验块;

将每一个所述校验块写入对应的所述磁盘中;

所述第一公式包括:

其中,所述snm表征编码;所述Cn表征校验块;所述Dm表征每一个数据块对应的数据;所述n表征所述校验块的数量;所述m表征所述数据块的数量;

在所述将所述当前写入日志语句对应的当前写入数据块重新写入至所述备份磁盘之后,进一步包括:监测所述故障磁盘的运行状态;

当所述故障磁盘的运行状态恢复正常时,调取所述至少两个磁盘对应的原始日志文件,并将所述原始日志文件合并为权威日志文件;

将所述备份磁盘对应的目标日志文件与所述权威日志文件进行比对;

根据比对结果,编辑所述目标日志文件;

利用所述编辑后的目标日志文件,在所述运行状态恢复正常的故障磁盘中恢复所述目标日志文件中每一条备份日志语句对应的数据块。

2.根据权利要求1所述的方法,其特征在于,

所述原始日志文件中的每一条日志语句,包括:类型字符串、对象字符串和版本号字符串;

所述将所述备份磁盘对应的目标日志文件与所述权威日志文件进行比对,根据比对结果,编辑所述目标日志文件,包括:针对所述目标日志文件中每一条日志语句均执行:

将所述日志语句包括的类型字符串、对象字符串和版本号字符串与所述权威日志文件中对应的权威日志语句包括的类型字符串、对象字符串和版本号字符串进行比对;

确定所述日志语句中的差异字符串,利用对应的所述权威日志语句中的字符串替换所述差异字符串。

3.根据权利要求1所述的方法,其特征在于,在所述确定所述磁盘为故障磁盘之后,在所述至少两个磁盘中,选取所述故障磁盘对应的备份磁盘之前,进一步包括:为所述故障磁盘配置磁盘占用率为100%;

所述在所述至少两个磁盘中,选取所述故障磁盘对应的备份磁盘,包括:确定每一所述磁盘对应的磁盘占用率,按照所述磁盘占用率的从小到大的顺序对所述磁盘进行排序,选取排序在首位的所述磁盘为所述备份磁盘。

4.一种数据存储装置,其特征在于,包括:

切分单元,用于将当前数据切分成至少两个数据块;

写入单元,用于将所述切分单元切分出的至少两个数据块写入至少两个磁盘中;

备份处理单元,用于针对所述写入单元写入的每一个所述磁盘均执行:判断所述磁盘对应的原始日志文件中,当前写入日志语句的写入时长是否达到设定的时长阈值,若是,则确定所述磁盘为故障磁盘,并在所述至少两个磁盘中,选取所述故障磁盘对应的备份磁盘;

将所述当前写入日志语句对应的当前写入数据块重新写入至所述备份磁盘中;

所述写入单元,包括:数据块计算子单元和数据块写入子单元;其中,所述数据块计算子单元,用于利用下述第一公式,计算所述切分单元切分出的至少两个数据块对应的至少两个校验块;

所述第一公式包括:

其中,所述snm表征编码;所述Cn表征校验块;所述Dm表征每一个数据块对应的数据;所述n表征所述校验块的数量;所述m表征所述数据块的数量;

所述数据块写入子单元,用于将所述数据块计算子单元计算出的每一个所述校验块写入对应的所述磁盘中;

其特征在于,进一步包括:监测单元、日志文件处理单元和恢复单元;其中,所述监测单元,用于监测所述备份处理单元确定出的故障磁盘的运行状态;

所述日志文件处理单元,用于当所述监测单元监测到所述故障磁盘的运行状态恢复正常时,调取所述至少两个磁盘对应的原始日志文件,并将所述原始日志文件合并为权威日志文件;将所述备份磁盘对应的目标日志文件与所述权威日志文件进行比对;根据比对结果,编辑所述目标日志文件;

所述恢复单元,用于利用所述日志文件处理单元编辑后的目标日志文件,在所述运行状态恢复正常的故障磁盘中恢复所述目标日志文件中每一条备份日志语句对应的数据块。

5.根据权利要求4所述的装置,其特征在于,

所述原始日志文件中的每一条日志语句,包括:类型字符串、对象字符串和版本号字符串;

所述日志文件处理单元,用于针对所述目标日志文件中每一条日志语句均执行:将所述日志语句包括的类型字符串、对象字符串和版本号字符串与所述权威日志文件中对应的权威日志语句包括的类型字符串、对象字符串和版本号字符串进行比对;确定所述日志语句中的差异字符串,利用对应的所述权威日志语句中的字符串替换所述差异字符串。

6.根据权利要求5所述的装置,其特征在于,进一步包括:配置单元;其中,所述配置单元,用于为所述备份处理单元确定出的所述故障磁盘配置磁盘占用率为

100%;

所述备份处理单元,进一步用于确定每一所述磁盘对应的磁盘占用率,按照所述磁盘占用率的从小到大的顺序对所述磁盘进行排序,选取排序在首位的所述磁盘为所述备份磁盘。

说明书 :

一种数据存储方法及装置

技术领域

[0001] 本发明涉及计算机技术领域,特别涉及一种数据存储方法及装置。

背景技术

[0002] 随着计算机技术的发展,数据量也在以爆炸式的不断增长,对于企业来说每天都会产生诸如企业财务报表、客户数据和企业业务交易数据等数据,由于这些数据对于企业的发展来说至关重要,需要存储起来,因此数据存储安全的重要性也逐渐显现出来。
[0003] 目前,采用备份盘的方式来存储数据,当磁盘工作正常时,就将数据按照顺序写入到磁盘中,一旦磁盘工作异常时,则启动备份磁盘,将数据继续写入到备份磁盘中。在上述的磁盘和备份磁盘交替的过程中,在磁盘工作异常之后,在备份磁盘启动工作之前的这部分时间,对应写入的数据会出现丢失,因此,现有的方式存在数据丢失的情况。

发明内容

[0004] 本发明实施例提供了一种数据存储方法及装置,从而减少数据丢失。
[0005] 第一方面,本发明实施例提供了一种数据存储方法,该方法可以包括:
[0006] 将当前数据切分成至少两个数据块;
[0007] 将所述至少两个数据块写入至少两个磁盘中;
[0008] 针对每一个磁盘均执行:
[0009] 判断所述磁盘对应的原始日志文件中,当前写入日志语句的写入时长是否达到设定的时长阈值,若是,则,
[0010] 确定所述磁盘为故障磁盘,并在所述至少两个磁盘中,选取所述故障磁盘对应的备份磁盘;
[0011] 将所述当前写入日志语句对应的当前写入数据块重新写入所述备份磁盘中。
[0012] 优选地,所述将所述至少两个数据块写入至少两个磁盘中,包括:
[0013] 利用下述公式(1),计算所述至少两个数据块对应的至少两个校验块;
[0014] 将每一个所述校验块写入对应的所述磁盘中;
[0015]
[0016] 其中,所述snm表征编码;所述Cn表征校验块;所述Dm表征每一个数据块对应的数据;所述n表征所述校验块的数量;所述m表征所述数据块的数量。
[0017] 优选地,在所述将所述当前写入日志语句对应的当前写入数据块重新写入至所述备份磁盘之后,进一步包括:
[0018] 监测所述故障磁盘的运行状态;
[0019] 当所述故障磁盘的运行状态恢复正常时,调取所述至少两个磁盘对应的原始日志文件,并将所述原始日志文件合并为权威日志文件;
[0020] 将所述备份磁盘对应的目标日志文件与所述权威日志文件进行比对;
[0021] 根据比对结果,编辑所述目标日志文件;
[0022] 利用所述编辑后的目标日志文件,在所述运行状态恢复正常的故障磁盘中恢复所述目标日志文件中每一条备份日志语句对应的数据块。
[0023] 优选地,
[0024] 所述原始日志文件中的每一条日志语句,包括:类型字符串、对象字符串和版本号字符串;
[0025] 所述将所述备份磁盘对应的目标日志文件与所述权威日志文件进行比对,根据比对结果,编辑所述目标日志文件,包括:
[0026] 针对所述目标日志文件中每一条日志语句均执行:
[0027] 将所述日志语句包括的类型字符串、对象字符串和版本号字符串与所述权威日志文件中对应的权威日志语句包括的类型字符串、对象字符串和版本号字符串进行比对;
[0028] 确定所述日志语句中的差异字符串,利用对应的所述权威日志语句中的字符串替换所述差异字符串。
[0029] 优选地,在所述确定所述磁盘为故障磁盘之后,在所述至少两个磁盘中,选取所述故障磁盘对应的备份磁盘之前,进一步包括:
[0030] 为所述故障磁盘配置磁盘占用率为100%;
[0031] 所述在所述至少两个磁盘中,选取所述故障磁盘对应的备份磁盘,包括:
[0032] 确定每一所述磁盘对应的磁盘占用率,按照所述磁盘占用率的从小到大的顺序对所述磁盘进行排序,选取排序在首位的所述磁盘为所述备份磁盘。
[0033] 第二方面,本发明实施例提供了一种数据存储装置,该装置包括:
[0034] 切分单元,用于将当前数据切分成至少两个数据块;
[0035] 写入单元,用于将所述切分单元切分出的至少两个数据块写入至少两个磁盘中;
[0036] 备份处理单元,用于针对所述写入单元写入的每一个所述磁盘均执行:判断所述磁盘对应的原始日志文件中,当前写入日志语句的写入时长是否达到设定的时长阈值,若是,则确定所述磁盘为故障磁盘,并在所述至少两个磁盘中,选取所述故障磁盘对应的备份磁盘;将所述当前写入日志语句对应的当前写入数据块重新写入至所述备份磁盘中。
[0037] 优选地,所述写入单元,包括:数据块计算子单元和数据块写入子单元;其中,[0038] 所述数据块计算子单元,用于利用下述公式(1),计算所述切分单元切分出的至少两个数据块对应的至少两个校验块;
[0039]
[0040] 其中,所述snm表征编码;所述Cn表征校验块;所述Dm表征每一个数据块对应的数据;所述n表征所述校验块的数量;所述m表征所述数据块的数量;
[0041] 所述数据块写入子单元,用于将所述数据块计算子单元计算出的每一个所述校验块写入对应的所述磁盘中。
[0042] 优选地,进一步包括:监测单元、日志文件处理单元和恢复单元;其中,[0043] 所述监测单元,用于监测所述备份处理单元确定出的故障磁盘的运行状态;
[0044] 所述日志文件处理单元,用于当所述监测单元监测到所述故障磁盘的运行状态恢复正常时,调取所述至少两个磁盘对应的原始日志文件,并将所述原始日志文件合并为权威日志文件;将所述备份磁盘对应的目标日志文件与所述权威日志文件进行比对;根据比对结果,编辑所述目标日志文件;
[0045] 所述恢复单元,用于利用所述日志文件处理单元编辑后的目标日志文件,在所述运行状态恢复正常的故障磁盘中恢复所述目标日志文件中每一条备份日志语句对应的数据块。
[0046] 优选地,
[0047] 所述原始日志文件中的每一条日志语句,包括:类型字符串、对象字符串和版本号字符串;
[0048] 所述日志文件处理单元,用于针对所述目标日志文件中每一条日志语句均执行:将所述日志语句包括的类型字符串、对象字符串和版本号字符串与所述权威日志文件中对应的权威日志语句包括的类型字符串、对象字符串和版本号字符串进行比对;确定所述日志语句中的差异字符串,利用对应的所述权威日志语句中的字符串替换所述差异字符串。
[0049] 优选地,进一步包括:配置单元;其中,
[0050] 所述配置单元,用于为所述备份处理单元确定出的所述故障磁盘配置磁盘占用率为100%;
[0051] 所述备份处理单元,进一步用于确定每一所述磁盘对应的磁盘占用率,按照所述磁盘占用率的从小到大的顺序对所述磁盘进行排序,选取排序在首位的所述磁盘为所述备份磁盘。
[0052] 可见,本发明实施例提供的数据存储方法及装置,通过将当前数据切分成至少两个数据块,将至少两个数据块按照设定的规则写入至少两个磁盘中,并针对每一个磁盘均执行:判断磁盘对应的日志文件中,当前写入日志语句的写入时长是否达到设定的时长阈值,若是,则确定磁盘为故障磁盘,并在至少两个磁盘中,选取故障磁盘对应的备份磁盘,并将当前写入日志语句对应的当前写入数据块重新写入至备份磁盘中。通过上述过程可知,本方案可以根据磁盘对应的原始日志文件中当前写入日志语句的写入时长判断出运行状态出现故障磁盘,为故障磁盘选取备份磁盘,并将当前写入日志语句对应的当前写入数据块重新写入至备份磁盘中,因此,本发明提供的方案可以减少数据丢失。

附图说明

[0053] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0054] 图1是本发明一个实施例提供的一种数据存储方法的流程图;
[0055] 图2是本发明另一个实施例提供的一种数据存储方法的流程图;
[0056] 图3是本发明一个实施例提供的一种数据存储装置的结构示意图;
[0057] 图4是本发明另一个实施例提供的一种数据存储装置的结构示意图;
[0058] 图5是本发明又一个实施例提供的一种数据存储装置的结构示意图;
[0059] 图6是本发明又一个实施例提供的一种数据存储装置的结构示意图;
[0060] 图7是本发明一个实施例提供的一种数据存储系统的结构示意图。

具体实施方式

[0061] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0062] 如图1所示,本发明实施例提供了一种数据存储方法,该方法可以包括以下步骤:
[0063] 步骤101:将当前数据切分成至少两个数据块;
[0064] 步骤102:将所述至少两个数据块写入至少两个磁盘中;
[0065] 步骤103:针对每一个磁盘均执行:判断所述磁盘对应的原始日志文件中,当前写入日志语句的写入时长是否达到设定的时长阈值,若是,则执行步骤105,否则,执行步骤104;
[0066] 步骤104:在所述原始日志文件中记录完整的当前写入日志语句,并结束当前流程;
[0067] 步骤105:确定所述磁盘为故障磁盘,并在所述至少两个磁盘中,选取所述故障磁盘对应的备份磁盘;
[0068] 步骤106:将所述当前写入日志语句对应的当前写入数据块重新写入所述备份磁盘中。
[0069] 根据附图1所示的实施例,通过将当前数据切分成至少两个数据块,将至少两个数据块写入至少两个磁盘中,并针对每一个磁盘均执行:判断磁盘对应的原始日志文件中,当前写入日志语句的写入时长是否达到设定的时长阈值,若是,则确定磁盘为故障磁盘,并在至少两个磁盘中,选取故障磁盘对应的备份磁盘,并将当前写入日志语句对应的当前写入数据块重新写入至备份磁盘中。通过上述过程可知,本方案可以根据磁盘对应的原始日志文件中当前写入日志语句的写入时长判断出运行状态出现故障磁盘,为故障磁盘选取备份磁盘,并将当前写入日志语句对应的当前写入数据块重新写入至备份磁盘中,因此,本发明提供的方案可以减少数据丢失。
[0070] 在本发明一个实施例中,为了对当前数据进行多重备份,所述将所述至少两个数据块写入至少两个磁盘中,包括:
[0071] 利用下述公式(1),计算所述至少两个数据块对应的至少两个校验块;
[0072] 将每一个所述校验块写入对应的所述磁盘中;
[0073]
[0074] 其中,所述snm表征编码;所述Cn表征校验块;所述Dm表征每一个数据块对应的数据;所述n表征所述校验块的数量;所述m表征所述数据块的数量。
[0075] 上述的当前数据切分成数据块的数量m以及检验块的数量n均可以根据具体的业务要求来确定。编码snm的编码规则也可以根据具体的业务要求确定。比如,将当前数据切分成3个数据块,需要得到4个校验块,那么编码就为s43的矩阵,利用公式(1)得到每一个校验块对应的数据,比如校验块C1中的数据为S11D1、S12D2、S13D3。
[0076] 上述的将每一个所述校验块写入对应的所述磁盘中,可以包括两种情况,一种是一个校验块对应写入一个磁盘中,另一种是至少两个校验块对应写入同一个磁盘中,比如两个校验块写入到同一个磁盘中。具体的写入情况可以根据业务要求来确定。
[0077] 根据上述实施例,通过设定编码矩阵,计算至少两个数据块对应的至少两个校验块,并将每一个校验块写入对应的磁盘中,由于经过上述过程每一数据块可以同时存在于不同的校验块中,因此在每一个校验块写入对应的磁盘时,可以对当前数据进行多重备份。
[0078] 在本发明一个实施例中,为了使故障磁盘运行状态恢复正常后,恢复其需要存储的数据,在所述将所述当前写入日志语句对应的当前写入数据块重新写入至所述备份磁盘之后可以进一步包括:
[0079] 监测所述故障磁盘的运行状态;
[0080] 当所述故障磁盘的运行状态恢复正常时,调取所述至少两个磁盘对应的原始日志文件,并将所述原始日志文件合并为权威日志文件;
[0081] 将所述备份磁盘对应的目标日志文件与所述权威日志文件进行比对;
[0082] 根据比对结果,编辑所述目标日志文件;
[0083] 利用所述编辑后的目标日志文件,在所述运行状态恢复正常的故障磁盘中恢复所述目标日志文件中每一条备份日志语句对应的数据块。
[0084] 上述的监测所述故障磁盘的运行状态,可以包括监测故障磁盘的转速是否恢复到预先设定的阈值,如果是则确定故障磁盘的运行状态恢复正常。当然监测故障磁盘的转速只是一种优选的方式,也可以根据业务要求选用其他的业务参数来监测故障磁盘的运行状态,比如数据传输率。
[0085] 当监测到故障磁盘的运行状态恢复正常时,调取至少两个磁盘中每一个磁盘对应的原始日志文件,并将各个原始日志文件合并为权威日志文件。在进行各个磁盘原始日志文件合并时,当对于一个数据块的各个日志文件中的原始日志语句一致时,直接将该数据块对应的原始日志语句写入到权威日志文件中。当对于一个数据块的各个原始日志文件中的日志语句存在不一致时,则将各个原始日志文件中内容一致且数量最多的日志语句写入到权威日志文件中,比如对于数据块1的10个原始日志文件中的日志语句存在不一致,其中有8个原始日志文件中的日志语句一致,那么就将8个原始日志文件中的一致的日志语句写入到权威日志文件中。
[0086] 待得到权威日志文件时,将备份磁盘中对应的目标日志文件与权威日志文件进行比对,根据比对结果编辑得到更新后的目标日志文件,并根据编辑得到的目标日志文件中的具体内容在运行状态恢复正常的故障磁盘中恢复目标日志文件中每一条备份日志语句对应的数据块。
[0087] 根据上述实施例,通过当监测到故障磁盘的运行状态恢复正常时,根据至少两个磁盘中每一个磁盘对应的原始日志文件,合并生成权威日志文件。根据权威日志文件编辑故障磁盘对应的备份磁盘中的目标日志文件,并根据编辑后的目标日志文件在运行状态恢复正常的故障磁盘中恢复目标日志文件中每一条备份日志语句对应的数据块,因此可以准确恢复故障磁盘需要存储的数据。
[0088] 在本发明一个实施例中,为了使备份磁盘对应的目标日志文件与权威日志文件中的内容可以完全一致,所述将所述备份磁盘对应的目标日志文件与所述权威日志文件进行比对,根据比对结果,编辑所述目标日志文件,包括:
[0089] 针对所述目标日志文件中每一条日志语句均执行:
[0090] 将所述日志语句包括的类型字符串、对象字符串和版本号字符串与所述权威日志文件中对应的权威日志语句包括的类型字符串、对象字符串和版本号字符串进行比对;
[0091] 确定所述日志语句中的差异字符串,利用对应的所述权威日志语句中的字符串替换所述差异字符串。
[0092] 上述的所述原始日志文件中的每一条日志语句可以包括:类型字符串、对象字符串和版本号字符串,上述的每一条日志语句中的内容只是一种优选内容,可以根据具体的业务要求进行增加和修改。另外上述的类型、对象和版本号均对应的是写入数据的操作,比如,写入数据的操作类型为A、对象为1和版本号为1.0。
[0093] 在目标日志文件中每一条日志语句均要执行:将所述日志语句包括的类型字符串、对象字符串和版本号字符串与所述权威日志文件中对应的权威日志语句包括的类型字符串、对象字符串和版本号字符串进行比对;确定所述日志语句中的差异字符串,利用对应的所述权威日志语句中的字符串替换所述差异字符串。比如在目标日志文件中存在3条日志语句,分别为日志语句1、日志语句2和日志语句3,那么就要首先将日志语句1对应的类型字符串、对象字符串和版本号字符串与权威日志文件中权威日志语句1对应的类型字符串、对象字符串和版本号字符串分别进行对比,然后将日志语2对应的类型、对象和版本号对应的字符串与权威日志文件中权威日志语句2对应的类型字符串、对象字符串和版本号字符串分别进行对比,最后将日志语3对应的类型、对象和版本号对应的字符串与权威日志文件中权威日志语句3对应的类型字符串、对象字符串和版本号字符串分别进行对比,经过上述对比得到日志语句1和日志语句2与权威文件中的日志语句1和日志语句2完全相同,而日志语句3与权威文件中的权威日志语句3版本号字符串存在差异,则利用权威日志文件中的版本号字符串替换日志语句3中的差异字符串。
[0094] 根据上述实施例,通过将目标日志文件中的每一个语句对应的类型字符串、对象字符串和版本号字符串与权威日志文件中权威语句对应的类型字符串、对象字符串和版本号字符串进行比对,确定差异字符串,利用所述权威日志文件中的字符串替换所述目标日志文件中的差异字符串。通过上述过程,可以使备份磁盘对应的目标日志文件与权威日志文件中的内容可以完全一致。
[0095] 在本发明一个实施例中,在所述确定所述磁盘为故障磁盘之后,在所述至少两个磁盘中,选取所述故障磁盘对应的备份磁盘之前,可以进一步包括:
[0096] 为所述故障磁盘配置磁盘占用率为100%;
[0097] 所述在所述至少两个磁盘中,选取所述故障磁盘对应的备份磁盘,包括:
[0098] 确定每一所述磁盘对应的磁盘占用率,按照所述磁盘占用率的从小到大的顺序对所述磁盘进行排序,选取排序在首位的所述磁盘为所述备份磁盘。
[0099] 上述的在至少两个磁盘中选取故障磁盘对应的备份磁盘可以包括:分别确定每一个磁盘对应的磁盘占用率,然后按照磁盘占用率的从小到大的顺序对所述磁盘进行排序,选取排序在首位的磁盘为备份磁盘。由于当磁盘处于故障状态时,其将不能再继续写入数据,因此当确定磁盘为故障磁盘后,就要为其配置磁盘占用率为100%,在进行排序时,该故障磁盘将排在最末位。比如存在磁盘1、磁盘2、磁盘3和磁盘4,当确定磁盘1为故障磁盘时,将为其配置磁盘占用率为100%。然后分别确定磁盘2的磁盘占用率为65%、磁盘3的磁盘占用率为35%和磁盘4的磁盘占用率为70%,则按照磁盘占用率从小到大的顺序对磁盘1、磁盘2、磁盘3和磁盘4进行排序,可以看出由于磁盘3的磁盘占用率最小排在首位,因此选取磁盘3为磁盘1的备份磁盘。
[0100] 另外除了可以按照磁盘占用率来选取故障磁盘对应的备份磁盘外,还可以选用其他的参数来选取故障磁盘对应的备份磁盘,比如磁盘存储速度。
[0101] 根据上述实施例,通过确定每一个磁盘对应的磁盘占用率,按照磁盘占用率的从小到大的顺序对所述磁盘进行排序,选取排序在首位的所述磁盘为所述备份磁盘,通过上述过程可以避免出现由于选取的备份磁盘存储空间不足的情况。
[0102] 下面以将数据1写入磁盘1、磁盘2、磁盘3和磁盘4为例,展开说明数据存储的方法,如图2所示,该方法包括:
[0103] 步骤201:将当前数据切分成至少两个数据块。
[0104] 在本步骤根据具体的业务要求将数据1划分为3个数据块,分别为D1、D2和D3。
[0105] 步骤202:计算至少两个数据块对应的至少两个校验块。
[0106] 在本步骤中根据下述公式(1)计算在步骤201中划分的3个数据块对应的校验块,其中校验块的数量根据业务要求确定为4个。
[0107]
[0108] 其中,所述snm表征编码;所述Cn表征校验块;所述Dm表征每一个数据块对应的数据;所述n表征所述校验块的数量;所述m表征所述数据块的数量。可以看出在本步骤中,编码为S43,利用公式(1)得到C1、C2、C3和C4对应的数据,比如校验块C1中的数据为S11D1、S12D2、S13D3。
[0109] 步骤203:将每一个校验块写入对应的磁盘中。
[0110] 在本步骤中,将校验块C1、C2、C3和C4写入对应的所述磁盘中,比如将校验块C1写入到磁盘1。
[0111] 步骤204:针对每一个磁盘均执行:判断磁盘对应的原始日志文件中,当前写入日志语句的写入时长是否达到设定的时长阈值,若是,则执行步骤205;否则执行步骤206。
[0112] 在本步骤中,时长阈值可以根据具体的业务要求确定,比如在本实施例中确定为5分钟,针对磁盘1、磁盘2、磁盘3和磁盘4均要执行本步骤,比如以磁盘1为例,判断磁盘1对应的原始日志文件中,当前写入日志语句的写入时长是否达到5分钟,若是则执行步骤205,否则继续判断下一条日志语句的写入的时长是否达到时长阈值。
[0113] 步骤205:确定故障磁盘,为故障磁盘配置磁盘占用率为100%,并在原始日志文件中删除当前写入日志语句。
[0114] 当磁盘1对应的原始日志文件中,比如当前写入日志语句为日志语句1,写入日志语句1的写入时长达到5分钟时,则确定磁盘1为故障磁盘,并为磁盘1配置磁盘占用率为100%。
[0115] 步骤206:在原始日志文件中记录完整的当前写入日志语句,结束当前流程。
[0116] 在本步骤中,在原始日志文件中可以设置一个日志语句条数阈值,比如为3000,当记录当前写入日志语句后要判断原始日志文件中已存在的日志语句条数是否达到条数阈值,当达到条数阈值时,则删除时间最早的一条日志语句。
[0117] 步骤207:确定每一磁盘对应的磁盘占用率,按照磁盘占用率的从小到大的顺序对磁盘进行排序,选取排序在首位的磁盘为备份磁盘。
[0118] 在本步骤中,确定磁盘1的磁盘占用率为100%、磁盘2的磁盘占用率为65%、磁盘3的磁盘占用率为35%和磁盘4的磁盘占用率为70%,并按照各个磁盘占用率的从小到大的顺序对磁盘1、磁盘2、磁盘3和磁盘4进行排序,可以看出磁盘3的磁盘占用率最小排在首位,因此确定磁盘3为磁盘1对应的备份磁盘。
[0119] 步骤208:将当前写入日志语句对应的当前写入数据块重新写入至备份磁盘中,并在备份磁盘对应的原始日志文件中写入完整的当前写入日志语句。
[0120] 在本步骤中,将当前写入日志语句1对应的当前写入数据块重新写入至磁盘3中。
[0121] 步骤209:监测故障磁盘的运行状态。
[0122] 在本步骤中监测磁盘1的运行状态。
[0123] 步骤210:当故障磁盘的运行状态恢复正常时,调取每一个磁盘对应的原始日志文件,并将原始日志文件合并为权威日志文件。
[0124] 在本步骤中,当监测到磁盘1的运行状态恢复正常时,调取磁盘1、磁盘2、磁盘3和磁盘4对应的原始日志文件,并将所有原始日志文件合并为权威日志文件,在合并权威日志文件时,当对于一个数据块的各个原始日志文件中的日志语句一致时,直接将该数据块对应的日志语句写入到权威日志文件中。当对于一个数据块的各个原始日志文件中的日志语句存在不一致时,则将各个原始日志文件中内容一致数量最多的日志语句写入到权威日志文件中,比如对于数据块1的10个原始日志文件中的日志语句存在不一致,其中有8个原始日志文件中的日志语句一致,那么就将8个原始日志文件中的一致的日志语句写入到权威日志文件中。根据上述方法得到权威日志文件。
[0125] 步骤211:针对目标日志文件中每一条日志语句均执行:将日志语句包括的类型字符串、对象字符串和版本号字符串与权威日志文件中对应的权威日志语句包括的类型字符串、对象字符串和版本号字符串进行比对。
[0126] 在本步骤中,比如磁盘3对应的目标日志文件中存在3条日志语句,分别为日志语句1、日志语句2和日志语句3,那么就要首先将日志语句1对应的类型字符串、对象字符串和版本号字符串与权威日志文件中权威日志语句1对应的类型字符串、对象字符串和版本号字符串分别进行对比,然后将日志语2对应的类型、对象和版本号对应的字符串与权威日志文件中权威日志语句2对应的类型字符串、对象字符串和版本号字符串分别进行对比,最后将日志语3对应的类型、对象和版本号对应的字符串与权威日志文件中权威日志语句3对应的类型字符串、对象字符串和版本号字符串分别进行对比,经过上述对比得到日志语句1和日志语句2与权威文件中的日志语句1和日志语句2完全相同,而日志语句3与权威文件中的权威日志语句3版本号字符串存在差异,则确定为差异字符串。
[0127] 步骤212:根据比对确定差异字符串,利用权威日志文件中的字符串替换目标日志文件中的差异字符串。
[0128] 在本步骤中,对步骤211中确定的差异字符串利用权威日志文件中的版本号对应的字符串替换日志语句3中的差异字符串。
[0129] 步骤213:利用编辑后的目标日志文件,在运行状态恢复正常的故障磁盘中恢复目标日志文件中每一条备份日志语句对应的数据块。
[0130] 在本步骤中,在运行状态恢复正常的磁盘1中恢复所述目标日志文件中每一条备份日志语句对应的数据块。
[0131] 如图3所示,本发明实施例提供了一种数据存储装置,该装置包括:
[0132] 切分单元301,用于将当前数据切分成至少两个数据块;
[0133] 写入单元302,用于将所述切分单元301切分出的至少两个数据块写入至少两个磁盘中;
[0134] 备份处理单元303,用于针对所述写入单元302写入的每一个所述磁盘均执行:判断所述磁盘对应的原始日志文件中,当前写入日志语句的写入时长是否达到设定的时长阈值,若是,则确定所述磁盘为故障磁盘,并在所述至少两个磁盘中,选取所述故障磁盘对应的备份磁盘;将所述当前写入日志语句对应的当前写入数据块重新写入至所述备份磁盘中。
[0135] 根据图3所示的实施例,通过切分单元将当前数据切分成至少两个数据块;写入单元将所述至少两个数据块写入至少两个磁盘中;备份处理单元针对每一个磁盘均执行:判断所述磁盘对应的原始日志文件中,当前写入日志语句的写入时长是否达到设定的时长阈值,若是,则确定所述磁盘为故障磁盘,并在所述至少两个磁盘中,选取所述故障磁盘对应的备份磁盘;将所述当前写入日志语句对应的当前写入数据块重新写入至所述备份磁盘中。通过上述过程可知,本方案可以根据磁盘对应的原始日志文件中当前写入日志语句的写入时长判断出运行状态出现故障磁盘,为故障磁盘选取备份磁盘,并将当前写入日志语句对应的当前写入数据块重新写入至备份磁盘中,因此,本发明提供的方案可以减少数据丢失。
[0136] 在本发明一个实施例中,如图4所示,所述写入单元302,可以包括:数据块计算子单元401和数据块写入子单元402;其中,
[0137] 所述数据块计算子单元401,用于利用下述公式(1),计算所述切分单元301切分出的至少两个数据块对应的至少两个校验块;
[0138]
[0139] 其中,所述snm表征编码;所述Cn表征校验块;所述Dm表征每一个数据块对应的数据;所述n表征所述校验块的数量;所述m表征所述数据块的数量;
[0140] 所述数据块写入子单元402,用于将所述数据块计算子单元401计算出的每一个所述校验块写入对应的所述磁盘中。
[0141] 在本发明一个实施例中,如图5所示,所述数据存储装置可以进一步包括:监测单元501、日志文件处理单元502和恢复单元503;其中,
[0142] 所述监测单元501,用于监测所述备份处理单元303确定出的故障磁盘的运行状态;
[0143] 所述日志文件处理单元502,用于当所述监测单元501监测到所述故障磁盘的运行状态恢复正常时,调取所述至少两个磁盘对应的原始日志文件,并将所述原始日志文件合并为权威日志文件;将所述备份磁盘对应的目标日志文件与所述权威日志文件进行比对;根据比对结果,编辑所述目标日志文件;
[0144] 所述恢复单元503,用于利用所述日志文件处理单元502编辑后的目标日志文件,在所述运行状态恢复正常的故障磁盘中恢复所述目标日志文件中每一条备份日志语句对应的数据块。
[0145] 在本发明一个实施例中,当所述原始日志文件中的每一条日志语句,包括类型字符串、对象字符串和版本号字符串时,所述日志文件处理单元502,用于针对所述目标日志文件中每一条日志语句均执行:将所述日志语句包括的类型字符串、对象字符串和版本号字符串与所述权威日志文件中对应的权威日志语句包括的类型字符串、对象字符串和版本号字符串进行比对;确定所述日志语句中的差异字符串,利用对应的所述权威日志语句中的字符串替换所述差异字符串。
[0146] 在本发明一个实施例中,如图6所示,所述数据存储装置可以进一步包括:配置单元601其中,
[0147] 所述配置单元601,用于为所述备份处理单元303确定出的所述故障磁盘配置磁盘占用率为100%;
[0148] 所述备份处理单元303,进一步用于确定每一所述磁盘对应的磁盘占用率,按照所述磁盘占用率的从小到大的顺序对所述磁盘进行排序,选取排序在首位的所述磁盘为所述备份磁盘。
[0149] 如图7所示,本发明实施例提供了一种数据存储系统,该系统可以包括:至少一个磁盘701和所述数据存储装置702;其中,磁盘的数量可以根据具体的业务要求来确定,每一个磁盘701,用于存储所述数据存储装置702写入的数据。
[0150] 上述装置内的各单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
[0151] 综上所述,本发明各个实施例至少可以实现如下有益效果:
[0152] 1、在本发明实施例中,通过将当前数据切分成至少两个数据块,将至少两个数据块写入至少两个磁盘中,并针对每一个磁盘均执行:判断磁盘对应的原始日志文件中,当前写入日志语句的写入时长是否达到设定的时长阈值,若是,则确定磁盘为故障磁盘,并在至少两个磁盘中,选取故障磁盘对应的备份磁盘,并将当前写入日志语句对应的当前写入数据块重新写入至备份磁盘中。通过上述过程可知,本方案可以根据磁盘对应的原始日志文件中当前写入日志语句的写入时长判断出运行状态出现故障磁盘,为故障磁盘选取备份磁盘,并将当前写入日志语句对应的当前写入数据块重新写入至备份磁盘中,因此,本发明提供的方案可以减少数据丢失。
[0153] 2、在本发明实施例中,通过设定编码矩阵,计算至少两个数据块对应的至少两个校验块,并将每一个校验块写入对应的磁盘中,由于经过上述过程每一数据块可以同时存在于不同的校验块中,因此在每一个校验块写入对应的磁盘时,可以对当前数据进行多重备份。
[0154] 3、在本发明实施例中,通过当监测到故障磁盘的运行状态恢复正常时,根据至少两个磁盘中每一个磁盘对应的原始日志文件,合并生成权威日志文件。根据权威日志文件编辑故障磁盘对应的备份磁盘中的目标日志文件,并根据编辑后的目标日志文件在运行状态恢复正常的故障磁盘中恢复目标日志文件中每一条备份日志语句对应的数据块,因此可以准确恢复故障磁盘需要存储的数据。
[0155] 4、在本发明实施例中,通过将目标日志文件中的每一个语句对应的类型字符串、对象字符串和版本号字符串与权威日志文件中权威语句对应的类型字符串、对象字符串和版本号字符串进行比对,确定差异字符串,利用所述权威日志文件中的字符串替换所述目标日志文件中的差异字符串。通过上述过程,可以使备份磁盘对应的目标日志文件与权威日志文件中的内容可以完全一致。
[0156] 5、在本发明实施例中,通过确定每一个磁盘对应的磁盘占用率,按照磁盘占用率的从小到大的顺序对所述磁盘进行排序,选取排序在首位的所述磁盘为所述备份磁盘,通过上述过程可以避免出现由于选取的备份磁盘存储空间不足的情况。
[0157] 需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个······”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同因素。
[0158] 本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储在计算机可读取的存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质中。
[0159] 最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。