基于多副本的数据存储方法和装置的制造方法

文档序号:10534429阅读:771来源:国知局
基于多副本的数据存储方法和装置的制造方法
【专利摘要】本公开公开了一种基于多副本的数据存储方法,包括以下步骤:当文件中的数据执行写入时,由主磁盘进程在内存中计算出文件中的数据的循环冗余码以及文件的大小;多个从磁盘进程在接受到文件中的数据写入请求时,将循环冗余码、文件的大小以及文件中的数据执行写入操作,并将反馈信息发送至主磁盘进程;主磁盘进程收到多个从磁盘进程的反馈信息后,执行核对操作,并将核对信息发送至数据集群管理端。上述基于多副本的数据存储方法保证数据的强一致性,能够应对包括主OSD(Object Storage Daemon,对象存储进程)在内的任一副本所在的磁盘的故障。本公开还公开了一种基于多副本的数据存储装置。
【专利说明】
基于多副本的数据存储方法和装置
技术领域
[0001]本公开涉及计算机存储技术领域,特别是涉及一种基于多副本的数据存储方法和
目.0
【背景技术】
[0002]目前,多副本下,无法保证数据的完全一致,需要采取额外的机制来保证这一点。例如,在三副本下,传统的方式都是由一个磁盘负责接收请求,并转发数据给另外两块磁盘,等另外两块落盘成功之后,自己再落盘,并在成功之后给予客户回应,至于磁盘是否能够完全正确的写入,并没有任何机制可以完全确认,这样有可能存在问题,即其中两快盘出现在落盘是写入出现与实际不相符的情况,而且当仅有的一块正确的盘出现不可恢复的故障之后,这部分错误的数据将没有办法恢复出来。这对于数据一致性要求非常高的场景下是无法接受的。另外,传统技术中,上述的不一致性存在的时间越长,数据的安全性就越受到威胁,由于磁盘有寿命,随着坏掉的磁盘越来越多,磁盘的更换都会带来潜在的数据丢失的情况。

【发明内容】

[0003]基于此,有必要提供一种提高数据一致性且保证数据安全的基于多副本的数据存储方法和装置。
[0004]—种基于多副本的数据存储方法,该方法包括:
[0005]当文件中的数据执行写入时,由主磁盘进程在内存中计算出所述文件中的数据的循环冗余码以及文件的大小;
[0006]多个从磁盘进程在接受到所述文件中的数据写入请求时,将所述循环冗余码、所述文件的大小以及所述文件中的数据执行写入操作,并将反馈信息发送至所述主磁盘进程;
[0007]所述主磁盘进程收到所述多个从磁盘进程的所述反馈信息后,执行核对操作,并将核对信息发送至数据集群管理端。
[0008]在其中一个实施例中,其中,所述计算出所述文件中的数据的循环冗余码以及文件的大小以文件系统扩展属性的方式进行存储。
[0009]在其中一个实施例中,其中,所述主磁盘进程收到所述多个从磁盘进程的所述反馈信息后,执行核对操作包括:
[0010]所述主磁盘进程接收到所述反馈信息后,遍历其存储的所有文件;
[0011 ]所述主磁盘进程向位于多个磁盘的所述多个从磁盘进程发起文件长度核对请求;
[0012]接收到所述多个从磁盘进程返回的所述文件长度后,将文件系统中比对长度与扩展属性中所述文件长度执行比对操作;
[0013]如果所述文件长度比对不一致,则向所述主磁盘进程返回错误消息,如果所述文件长度比对一致,则将所述文件长度和副本号发送至所述主磁盘进程。
[0014]在其中一个实施例中,还包括:当向所述主磁盘进程返回所述错误消息时,则针对比对的所述文件进行修复标志的设置。
[0015]在其中一个实施例中,其中,所述针对比对的所述文件进行修复标志的设置包括:
[0016]收集位于所述多个磁盘的所述多个从磁盘进程中所述文件长度和所述副本号;
[0017]将所述文件长度和所述副本号与所述主磁盘进程中的所述文件长度进行比对;
[0018]若比对不一致,则将所述主磁盘进程中的所述文件拷贝给位于所述多个磁盘的所述多个从磁盘进程,若比对一致,则对所述主磁盘进程中的所述文件执行替换操作。
[0019]—种基于多副本的数据存储装置,包括:
[0020]计算模块,用于当文件中的数据执行写入时,由主磁盘进程在内存中计算出所述文件中的数据的循环冗余码以及文件的大小;
[0021]反馈信息发送模块,用于多个从磁盘进程在接受到所述文件中的数据写入请求时,将所述循环冗余码、所述文件的大小以及所述文件中的数据执行写入操作,并将反馈信息发送至所述主磁盘进程;
[0022]核对处理模块,用于所述主磁盘进程收到所述多个从磁盘进程的所述反馈信息后,执行核对操作,并将核对信息发送至数据集群管理端。
[0023]在其中一个实施例中,其中,所述计算出所述文件中的数据的循环冗余码以及文件的大小以文件系统扩展属性的方式进行存储。
[0024]在其中一个实施例中,其中,所述核对处理模块包括:
[0025]遍历模块,用于所述主磁盘进程接收到所述反馈信息后,遍历其存储的所有文件;
[0026]核对请求模块,用于所述主磁盘进程向位于多个磁盘的所述多个从磁盘进程发起文件长度核对请求;
[0027]第一比对模块,用于接收到所述多个从磁盘进程返回的所述文件长度后,将文件系统中比对长度与扩展属性中所述文件长度执行比对操作;
[0028]第一执行模块,用于如果所述文件长度比对不一致,则向所述主磁盘进程返回错误消息,如果所述文件长度比对一致,则将所述文件长度和副本号发送至所述主磁盘进程。
[0029]在其中一个实施例中,还包括:设置模块,用于当向所述主磁盘进程返回所述错误消息时,则针对比对的所述文件进行修复标志的设置。
[0030]在其中一个实施例中,其中,所述设置模块包括:
[0031]收集模块,用于收集位于所述多个磁盘的所述多个从磁盘进程中所述文件长度和所述副本号;
[0032]第二比对模块,用于将所述文件长度和所述副本号与所述主磁盘进程中的所述文件长度进行比对;
[0033]第二执行模块,用于若比对不一致,则将所述主磁盘进程中的所述文件拷贝给位于所述多个磁盘的所述多个从磁盘进程,若比对一致,则对所述主磁盘进程中的所述文件执行替换操作。
[0034]上述基于多副本的数据存储方法和装置,当文件中的数据执行写入时,由主磁盘进程在内存中计算出文件中的数据的循环冗余码以及文件的大小;多个从磁盘进程在接受到文件中的数据写入请求时,将循环冗余码、文件的大小以及文件中的数据执行写入操作,并将反馈信息发送至主磁盘进程;主磁盘进程收到多个从磁盘进程的反馈信息后,执行核对操作,并将核对信息发送至数据集群管理端。上述基于多副本的数据存储方法保证数据的强一致性,能够应对包括主OSD(Object Storage Daemon,对象存储进程)在内的任一副本所在的磁盘的故障。
【附图说明】
[0035]图1是一个实施例中基于多副本的数据存储方法的流程示意图;
[0036]图2是另一个实施例中基于多副本的数据存储方法的流程示意图;
[0037]图3是一个实施例中基于多副本的数据存储装置的结构示意图;以及
[0038]图4是另一个实施例中基于多副本的数据存储装置的结构示意图。
【具体实施方式】
[0039]为使本公开的目的、技术方案和优点更加清楚明了,下面结合【具体实施方式】并参照附图,对本公开进一步详细说明。应该理解,这些描述只是示例性的,而并非要限制本公开的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
[0040]参见图1,一个实施例中,提供了一种基于多副本的数据存储方法,该方法包括以下步骤:
[0041 ]步骤102,当文件中的数据执行写入时,由主磁盘进程在内存中计算出文件中的数据的循环冗余码以及文件的大小。
[0042]本实施例中,计算出文件中的数据的循环冗余码以及文件的大小以文件系统扩展属性的方式进行存储。
[0043]步骤104,多个从磁盘进程在接受到文件中的数据写入请求时,将循环冗余码、文件的大小以及文件中的数据执行写入操作,并将反馈信息发送至主磁盘进程。
[0044]步骤106,主磁盘进程收到多个从磁盘进程的反馈信息后,执行核对操作,并将核对信息发送至数据集群管理端。
[0045]本实施例中,主磁盘进程接收到反馈信息后,遍历其存储的所有文件;主磁盘进程向位于多个磁盘的多个从磁盘进程发起文件长度核对请求;接收到多个从磁盘进程返回的文件长度后,将文件系统中比对长度与扩展属性中文件长度执行比对操作;如果文件长度比对不一致,则向主磁盘进程返回错误消息,如果文件长度比对一致,则将文件长度和副本号发送至主磁盘进程。
[0046]需要说明的是,由于每个对象都只有一个主对象存储进程,因此对于对象的更新都是顺序的,不存在同步问题。当主对象存储进程收到对象的写请求时,它负责把数据发送给其他磁盘落盘,只要这个数据被保存在所有的对象存储进程上时,主对象存储进程才应答对象的写请求,保证了副本的一致性
[0047]上述基于多副本的数据存储方法,当文件中的数据执行写入时,由主磁盘进程在内存中计算出文件中的数据的循环冗余码以及文件的大小;多个从磁盘进程在接受到文件中的数据写入请求时,将循环冗余码、文件的大小以及文件中的数据执行写入操作,并将反馈信息发送至主磁盘进程;主磁盘进程收到多个从磁盘进程的反馈信息后,执行核对操作,并将核对信息发送至数据集群管理端。上述基于多副本的数据存储方法保证数据的强一致性,能够应对包括主OSD(Object Storage Daemon,对象存储进程)在内的任一副本所在的磁盘的故障。
[0048]如图2所示,在一个实施例中,提供了一种基于多副本的数据存储方法,该方法包括以下步骤:
[0049]步骤201,当文件中的数据执行写入时,由主磁盘进程在内存中计算出文件中的数据的循环冗余码以及文件的大小。
[0050]步骤202,多个从磁盘进程在接受到文件中的数据写入请求时,将循环冗余码、文件的大小以及文件中的数据执行写入操作,并将反馈信息发送至主磁盘进程。
[0051]步骤203,主磁盘进程收到多个从磁盘进程的反馈信息后,执行核对操作,并将核对信息发送至数据集群管理端。
[0052]步骤204,当向主磁盘进程返回错误消息时,则针对比对的文件进行修复标志的设置。
[0053]本实施例中,收集位于多个磁盘的多个从磁盘进程中文件长度和副本号;将文件长度和副本号与主磁盘进程中的文件长度进行比对;若比对不一致,则将主磁盘进程中的文件拷贝给位于多个磁盘的多个从磁盘进程,若比对一致,则对主磁盘进程中的文件执行替换操作。
[0054]基于同一发明构思,在一个实施例中,还提出一种基于多副本的数据存储装置。如图3,该基于多副本的数据存储装置10包括计算模块200、反馈信息发送模块400和核对处理模块600。
[0055]其中,计算模块200用于当文件中的数据执行写入时,由主磁盘进程在内存中计算出文件中的数据的循环冗余码以及文件的大小;反馈信息发送模块400用于多个从磁盘进程在接受到文件中的数据写入请求时,将循环冗余码、文件的大小以及文件中的数据执行写入操作,并将反馈信息发送至主磁盘进程;核对处理模块600用于主磁盘进程收到多个从磁盘进程的反馈信息后,执行核对操作,并将核对信息发送至数据集群管理端。
[0056]其中,计算出文件中的数据的循环冗余码以及文件的大小以文件系统扩展属性的方式进行存储。
[0057]此外,如图4,在一个实施例中,核对处理模块600包括:遍历模块610、核对请求模块620、第一比对模块630和第一执行模块640。
[0058]其中,遍历模块610用于主磁盘进程接收到反馈信息后,遍历其存储的所有文件;核对请求模块620用于主磁盘进程向位于多个磁盘的多个从磁盘进程发起文件长度核对请求;第一比对模块630用于接收到多个从磁盘进程返回的文件长度后,将文件系统中比对长度与扩展属性中文件长度执行比对操作;第一执行模块640用于如果文件长度比对不一致,则向主磁盘进程返回错误消息,如果文件长度比对一致,则将文件长度和副本号发送至主磁盘进程。
[0059]另外,如图4,在一个实施例中,该基于多副本的数据存储装置还包括:设置模块650。其中,设置模块650用于当向主磁盘进程返回错误消息时,则针对比对的文件进行修复标志的设置。具体的,设置模块650包括:收集模块651、第二比对模块652和第二执行模块653。其中,收集模块651用于收集位于多个磁盘的多个从磁盘进程中文件长度和副本号;第二比对模块652用于将文件长度和副本号与主磁盘进程中的文件长度进行比对;第二执行模块653用于若比对不一致,则将主磁盘进程中的文件拷贝给位于多个磁盘的多个从磁盘进程,若比对一致,则对主磁盘进程中的文件执行替换操作。
[0060]上述基于多副本的数据存储装置,通过计算模块200当文件中的数据执行写入时,由主磁盘进程在内存中计算出文件中的数据的循环冗余码以及文件的大小;再通过反馈信息发送模块400在多个从磁盘进程在接受到文件中的数据写入请求时,将循环冗余码、文件的大小以及文件中的数据执行写入操作,并将反馈信息发送至主磁盘进程;最终通过核对处理模块600在主磁盘进程收到多个从磁盘进程的反馈信息后,执行核对操作,并将核对信息发送至数据集群管理端。上述基于多副本的数据存储装置保证数据的强一致性,能够应对包括主0SD(0bject Storage Daemon,对象存储进程)在内的任一副本所在的磁盘的故障。
[0061]应当理解的是,本公开的上述【具体实施方式】仅仅用于示例性说明或解释本公开的原理,而不构成对本公开的限制。因此,在不偏离本公开的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。此外,本公开所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例。
【主权项】
1.一种基于多副本的数据存储方法,该方法包括: 当文件中的数据执行写入时,由主磁盘进程在内存中计算出所述文件中的数据的循环冗余码以及文件的大小; 多个从磁盘进程在接受到所述文件中的数据写入请求时,将所述循环冗余码、所述文件的大小以及所述文件中的数据执行写入操作,并将反馈信息发送至所述主磁盘进程;所述主磁盘进程收到所述多个从磁盘进程的所述反馈信息后,执行核对操作,并将核对信息发送至数据集群管理端。2.根据权利要求1所述的方法,其中,所述计算出所述文件中的数据的循环冗余码以及文件的大小以文件系统扩展属性的方式进行存储。3.根据权利要求1所述的方法,其中,所述主磁盘进程收到所述多个从磁盘进程的所述反馈信息后,执行核对操作包括: 所述主磁盘进程接收到所述反馈信息后,遍历其存储的所有文件; 所述主磁盘进程向位于多个磁盘的所述多个从磁盘进程发起文件长度核对请求; 接收到所述多个从磁盘进程返回的所述文件长度后,将文件系统中比对长度与扩展属性中所述文件长度执行比对操作; 如果所述文件长度比对不一致,则向所述主磁盘进程返回错误消息,如果所述文件长度比对一致,则将所述文件长度和副本号发送至所述主磁盘进程。4.根据权利要求3所述的方法,还包括:当向所述主磁盘进程返回所述错误消息时,则针对比对的所述文件进行修复标志的设置。5.根据权利要求4所述的方法,其中,所述针对比对的所述文件进行修复标志的设置包括: 收集位于所述多个磁盘的所述多个从磁盘进程中所述文件长度和所述副本号; 将所述文件长度和所述副本号与所述主磁盘进程中的所述文件长度进行比对; 若比对不一致,则将所述主磁盘进程中的所述文件拷贝给位于所述多个磁盘的所述多个从磁盘进程,若比对一致,则对所述主磁盘进程中的所述文件执行替换操作。6.—种基于多副本的数据存储装置,包括: 计算模块,用于当文件中的数据执行写入时,由主磁盘进程在内存中计算出所述文件中的数据的循环冗余码以及文件的大小; 反馈信息发送模块,用于多个从磁盘进程在接受到所述文件中的数据写入请求时,将所述循环冗余码、所述文件的大小以及所述文件中的数据执行写入操作,并将反馈信息发送至所述主磁盘进程; 核对处理模块,用于所述主磁盘进程收到所述多个从磁盘进程的所述反馈信息后,执行核对操作,并将核对信息发送至数据集群管理端。7.根据权利要求6所述的装置,其中,所述计算出所述文件中的数据的循环冗余码以及文件的大小以文件系统扩展属性的方式进行存储。8.根据权利要求6所述的装置,其中,所述核对处理模块包括: 遍历模块,用于所述主磁盘进程接收到所述反馈信息后,遍历其存储的所有文件;核对请求模块,用于所述主磁盘进程向位于多个磁盘的所述多个从磁盘进程发起文件长度核对请求; 第一比对模块,用于接收到所述多个从磁盘进程返回的所述文件长度后,将文件系统中比对长度与扩展属性中所述文件长度执行比对操作; 第一执行模块,用于如果所述文件长度比对不一致,则向所述主磁盘进程返回错误消息,如果所述文件长度比对一致,则将所述文件长度和副本号发送至所述主磁盘进程。9.根据权利要求8所述的装置,还包括:设置模块,用于当向所述主磁盘进程返回所述错误消息时,则针对比对的所述文件进行修复标志的设置。10.根据权利要求9所述的装置,其中,所述设置模块包括: 收集模块,用于收集位于所述多个磁盘的所述多个从磁盘进程中所述文件长度和所述副本号; 第二比对模块,用于将所述文件长度和所述副本号与所述主磁盘进程中的所述文件长度进行比对; 第二执行模块,用于若比对不一致,则将所述主磁盘进程中的所述文件拷贝给位于所述多个磁盘的所述多个从磁盘进程,若比对一致,则对所述主磁盘进程中的所述文件执行替换操作。
【文档编号】G06F11/14GK105892954SQ201610264268
【公开日】2016年8月24日
【申请日】2016年4月25日
【发明人】吴兴义
【申请人】乐视控股(北京)有限公司, 乐视云计算有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1