一种数据存储的检测方法、设备及分布式存储系统的制作方法

文档序号:6523633阅读:207来源:国知局
一种数据存储的检测方法、设备及分布式存储系统的制作方法
【专利摘要】本发明的实施例公开了一种数据存储的检测方法、设备及分布式存储系统,其中,对分布式存储系统中的第一数据节点中存储的各条数据进行扫描;对于当前扫描到的数据,获取所述扫描到的数据存储在所述分布式存储系统的其余一个或多个第二数据节点中的副本,并检测所述数据的各个副本是否发生故障。通过本发明的实施例,可以及时发现副本不足的数据,进而可以及时对副本不足的数据进行修复,保证数据的可靠性。
【专利说明】一种数据存储的检测方法、设备及分布式存储系统
【技术领域】
[0001]本发明涉及计算机【技术领域】,尤其涉及一种数据存储的检测方法、设备及分布式存储系统。
【背景技术】
[0002]分布式存储系统,例如,Cassandra,一般采用多副本的分布存储策略,通过多副本冗余存储来保证数据的可靠性。例如,可以采用3副本存储,即将原始数据hash后存储在其中一个数据节点上,而将另外2份副本存储在其他数据节点上。当某个磁盘或节点故障时,仍能保证另外两个副本可以访问,并在合适的条件下完成故障副本的修复。
[0003]其中,Cassandra是依赖DHT (Distributed Hash Table,分布式哈希表)技术实现的一种典型的无中心节点的环形结构的分布式存储系统。Cassandra数据存储空间可以抽象为一个环形结构,数据就是通过hash分散在这个环形存储空间上。每个节点负责管理这个环形存储空间上的某一块连续的范围(也叫Range),落在此Range空间上的数据就存储在这个节点上。数据是以SSTable文件格式存储在这个节点的磁盘上。
[0004]在相关技术中,在数据故障时并不会进行数据副本的修复工作,而是依赖后续的用户读操作,在接入节点触发多副本的对比,通过比较各副本的签名是否一致,来发现哪个副本丢失或故障,进而对故障或丢失的副本进行修复。如图1所示,当副本2所在数据节点磁盘故障导致该副本丢失时,在用户再次访问该数据时,从该数据节点上无法读取副本2,因此三份副本的数据签名是不一致的,进而会将完好副本的副本数据修复到该数据节点。
[0005]由此可见,在相关技术中,在磁盘故障或节点故障导致副本丢失后,并不能及时进行修复,而是依赖后续用户读操作触发修复。当丢失的此数据并非用户经常访问的热数据的情况下,则这个数据将长期保持副本不足的状态。而在这段较长的时间内,由于其他节点或磁盘故障导致另外的副本丢失,则将导致数据丢失无法访问,因而数据的可靠性就无法得到保证。

【发明内容】

[0006]鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的一种数据存储的检测方法、设备及分布式存储系统,可以将方便的检测分布式存储系统中存储的数据副本是否丢失。
[0007]根据本发明的一个方面,提供了一种数据存储的检测方法,所述方法包括:对分布式存储系统中的第一数据节点中存储的各条数据进行扫描,对于当前扫描到的数据,获取所述扫描到的数据存储在所述分布式存储系统的其余一个或多个第二数据节点中的副本,并检测所述数据的各个副本是否发生故障。
[0008]可选地,对分布式存储系统中的第一数据节点中存储的各条数据进行扫描的步骤包括:对记录所述第一数据节点中写入的每条数据的相关信息进行扫描,获取每条所述数据的相关信息,其中,所述相关信息包括:所述数据的数据标识、及存储所述数据的其余一个或多个副本的第二数据节点的标识信息。
[0009]可选地,获取所述扫描到的数据存储在所述分布式存储系统的其余一个或多个第二数据节点中的副本,并检测所述数据的各个副本是否发生故障的步骤包括:获取所述第一数据节点中存储的所述数据,并获取所述数据的第一数据签名;从存储所述数据的副本的其余所述一个或多个第二数据节点上分别读取所述数据的各个副本;分别获取读取的各个所述副本的第二数据签名;通过判断获取的所述第一数据签名和各个所述第二数据签名是否完全相同,检测所述数据的各个副本是否发生故障。
[0010]可选地,如果检测到所述数据的一个或多个副本发生故障,所述方法还包括:将所述数据重新写入到存储发生故障的副本数据节点。
[0011]可选地,所述方法还包括:所述分布式存储系统中的一个接入节点接收到数据写入请求;所述接入节点向所述分布式存储系统的N个数据节点发送副本写入请求,其中,N为大于I的整数;在第一预定时间内,所述接入节点接收到所述N个数据节点中的η个数据节点返回的成功应答,确定所述请求写入的数据能够成功写入,等待所述N个数据节点中其余Ν-η个数据节点的成功应答,其中,η为大于O且小于N的整数;在第二预定时间内,如果所述接入节点全部接收到所述Ν-η个数据节点返回的成功应答,则确定所述请求写入的数据的副本完整,否则,确定所述请求写入的数据的副本不完整,对所述请求写入的数据的副本进行修复。
[0012]根据本发明的另一个方面,还提供了一种数据存储的检测设备,所述设备包括:扫描模块,用于对分布式存储系统中的第一数据节点中存储的各条数据进行扫描;检测模块,用于所述扫描模块当前扫描到的数据进行检测,获取扫描到的所述数据存储在所述分布式存储系统的其余一个或多个第二数据节点中的各个副本,并检测所述数据的各个副本是否发生故障。
[0013]可选地,所述检测模块包括:读取模块,用于获取所述第一数据节点中存储的所述数据,以及从存储所述数据的副本的其余一个或多个第二数据节点上分别读取所述数据的各个副本;获取模块,用于分别获取所述第一数据节点中存储的所述数据的第一数据签名,以及读取的各个所述副本的第二数据签名;判断模块,用于判断获取的所述第一数据签名和各个所述第二数据签名是否完全相同,检测所述数据的各个副本是否发生故障。
[0014]可选地,所述设备还包括:写入模块,用于在所述检测模块检测到其中一个或多个副本发生故障时,将所述数据重新写入到存储发生故障的副本的数据节点。
[0015]根据本发明的又一个方面,还提供了一种分布式存储系统,其中,包括如上述的数据存储的检测设备。
[0016]可选地,所述系统还包括:接入节点,所述接入节点包括:第一接收模块,用于接收数据写入请求;发送模块,用于所述分布式存储系统的N个数据节点发送副本写入请求,其中,N为大于I的整数;第二接收模块,用于接收所述N个数据节点返回的成功应答;确定模块,用于在所述第二接收模块在第一预定时间内接收到所述N个数据节点中的η个数据节点返回的成功应答时,确定所述请求写入的数据能够成功写入,以及如果所述第二接收模块在第二预定时间内全部接收到所述N个数据节点中的其余Ν-η个数据节点返回的成功应答,则确定所述请求写入的数据的副本完整,否则,确定所述请求写入的数据的副本不完整,对所述请求写入的数据的副本进行修复。[0017]由上述技术方案可知,本发明的实施例具有如下有益效果:数据节点对其存储的各条数据进行扫描,检测每条数据的副本是否发生故障,而不需要接入节点的读请求来触发检测,从而可以及时发现副本不足的数据,进而可以及时对副本不足的数据进行修复,保证了数据的可靠性。
[0018]上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的【具体实施方式】。
【专利附图】

【附图说明】
[0019]通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
[0020]图1示出了相关技术中副本丢失检测的示意图;
[0021]图2示出了根据本发明的实施例的数据存储的检测方法200的流程图;
[0022]图3示出了根据本发明的实施例的新增量数据检测修复方法300的流程图;
[0023]图4示出了根据本发明的实施例的全量数据扫描修复方法400的流程图;
[0024]图5示出了根据本发明的实施例的数据存储的检测设备500的结构示意图;以及
[0025]图6示出了根据本发明的实施例的分布式存储系统的结构示意图。
【具体实施方式】
[0026]下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
[0027]参见图2,其中示意性地示出了根据本发明的实施例的数据存储的检测方法200的流程图。如图2所示,根据本发明的实施例的数据存储的检测方法包括步骤S210和步骤S220。方法200始于步骤S210,其中,对分布式存储系统中的第一数据节点中存储的各条数据进行扫描。在实际应用中可以在第一数据节点启动后,触发步骤S210,即在第一数据节点启动后就开始第一数据节点存储的数据的全量扫描,或者,也可以在扫描完第一数据节点存储的所有数据之后,再从新开始对第一数据节点存储的各条数据进行扫描,即对第一数据节点中存储的各条数据进行循环扫描,或者,也可以定时或周期性地对第一数据节点中存储的各条数据进行扫描,其中,扫描周期可以根据扫描完第一数据节点中的所有数据的时间确定,例如,如果扫描完第一数据节点中的所有数据需要24小时,则可以将扫描周期定为24小时。在步骤S220中,对于步骤S210当前扫描到的数据,获取所述扫描到的数据存储在所述分布式存储系统的其余一个或多个第二数据节点中的副本,并检测所述数据的各个副本是否发生故障,例如,无法访问或丢失。
[0028]在本发明的实施例提供的上述技术方案中,数据节点扫描其中存储的数据的各个副本是否丢失,从而可以及时的发现数据的副本是否充足,以及时对副本不足的数据进行修复,降低了因数据丢失而导致访问失败的机率。[0029]可选地,对所述第一数据节点中存储的各条数据进行扫描的步骤可以包括:对记录第一数据节点中写入的每条数据的相关信息进行扫描,获取每条所述数据的相关信息,其中,所述相关信息包括:所述数据的数据标识、及存储所述数据的其余一个或多个副本的第二数据节点的标识信息。例如,在Cassandra系统中,用户插入的数据的相关信息记录在一个表中,扫描从头开始逐表进行扫描,依次获取每条数据的相关信息。
[0030]可选地,检测所述数据存储在所述分布式存储系统的其余一个或多个第二数据节点中的各个副本是否发生故障的步骤可以包括:获取所述第一数据节点中存储的所述数据,并获取所述数据的第一数据签名;从存储所述数据的副本的其余所述一个或多个第二数据节点上分别读取所述数据的各个副本;分别获取读取的各个所述副本的第二数据签名;通过判断获取的所述第一数据签名和各个所述第二数据签名是否完全相同,检测所述数据的各个副本是否发生故障。例如,对于3个副本情况,进行本地数据扫描时,获取本地存储的每条数据(也即数据的I个副本),然后获取该副本的数据签名;然后从其他数据节点获取该条数据的另外2个副本,然后获取这两个副本的数据签名;通过比较3个副本数据的数据签名是否相同,确定是否发生数据故障,例如,如果其中一个副本数据的数据签名与另外两个不相同,则确定该副本数据发生故障。
[0031]可选地,在检测到其中一个或多个副本发生故障后,可以根据获取到的数据对发生故障的副本数据进行修复。即将所述数据重新写入到存储发生故障的副本的数据节点,即上述第一数据节点和/或第二数据节点。通过该可选方案,可以及时修复副本不足的数据,降低因数据丢失而导致数据无法访问的机率,提高了数据的可靠性。
[0032]可选地,在本发明的实施例中,还可以在写入数据时对数据进行检查修复,即对增量数据进行检查修复。在该可选实施方式中,该方法还包括以下步骤:所述分布式存储系统中的一个接入节点接收到数据写入请求;所述接入节点向所述分布式存储系统的N个数据节点发送副本写入请求,其中,N为大于I的整数;在第一预定时间内,所述接入节点接收到所述N个数据节点中的η个数据节点返回的成功应答,确定所述请求写入的数据能够成功写入,等待所述N个数据节点中其余Ν-η个数据节点的成功应答,其中,η为大于O且小于N的整数;在第二预定时间内,如果所述接入节点全部接收到所述Ν-η个数据节点返回的成功应答,则确定所述请求写入的数据的副本完整,否则,确定所述请求写入的数据的副本不完整,对所述请求写入的数据的副本进行修复。通过该可选实施方案,可以保证正在进行写操作的新增数据在写操作完成后,数据副本的个数足够。在实际应用中,可以根据实际需要,设置N及η的具体数值,具体本发明的实施例不作限制。
[0033]在实际应用中,上述全量数据扫描检测修复可以称作为本地检测(LocalCheck)机制,而新增数据检测修复可以称作为代理检测(ProxyCheck)机制,下面以3个副本为例,分别对这两种机制进行介绍。
[0034]图3为根据本发明的实施例的新增量数据检测修复方法(即ProxyCheck机制)300的流程图,如图3所示,方法300主要包括两个进程,一个是写进程,一个是ProxyCheck进程。在写进程中,如图3所示,当用户写入数据时,接入节点会选择3个数据节点发送副本写请求,然后等待应答返回,若有两个以上的节点的应答在规定时间内能够成功返回,即可认为成功写入,随后在后台等待第三个应答的返回,进入ProxyCheck进程,如果在规定时间内没有接收到两个以上的节点的应答,则认为写超时,重新进行写操作。在PiOxyCheck进程中,等待第三个应答的返回,如果第三个应答在规定时间内没有成功返回,则记录下相关请求信息,并且交给后台修复线程尝试修复,直到修复成功后删除记录,如果第三个应答在规定时间内成功返回,则确定副本完整,结果该数据的写入操作。
[0035]图4为根据本发明的实施例的全量数据扫描修复方法(即LocalCheck机制)400的流程图,如图4所示,方法400可以通过一个LocalCheck进程实现,在方法400中,在分布式存储系统(例如,Cassandra系统)的数据节点启动后,在本地启动数据扫描线程,从头开始逐表扫描用户插入的数据。对每条数据,从其副本所在的三个数据节点上读取各副本,计算数据签名并进行比对,如果三个数据签名不一致即为数据故障或丢失,则将完好的数据重新写入故障或丢失的副本所在的数据节点,然后继续扫描下一条数据。在完全数据节点上存储的所有数据的一轮扫描后,继续下一轮扫描。
[0036]根据本发明的第二方面,与如上所述的根据本发明的实施例的数据存储的检测方法200相对应,本发明还提供了一种数据存储的检测设备500。
[0037]如图5所示,根据本发明的实施例的数据存储的检测设备500可以主要包括扫描模块510和检测模块520。应当理解,图5中所表示的各个模块的连接关系仅为示例,本领域技术人员完全可以采用其它的连接关系,只要在这样的连接关系下各个模块也能够实现本发明的功能即可。
[0038]在本说明书中,各个模块的功能可以通过使用专用硬件、或者能够与适当的软件相结合来执行处理的硬件来实现。这样的硬件或专用硬件可以包括专用集成电路(ASIC)、各种其它电路、各种处理器等。当由处理器实现时,该功能可以由单个专用处理器、单个共享处理器、或者多个独立的处理器(其中某些可能被共享)来提供。另外,处理器不应该被理解为专指能够执行软件的硬件,而是可以隐含地包括、而不限于数字信号处理器(DSP)硬件、用来存储软件的只读存储器(ROM)、随机存取存储器(RAM)、以及非易失存储设备。
[0039]在本发明的实施例中,扫描模块510,用于对分布式存储系统中的第一数据节点中存储的各条数据进行扫描;检测模块520,用于对扫描模块510当前扫描到的数据进行检测,获取扫描到的所述数据存储在所述分布式存储系统的其余一个或多个第二数据节点中的各个副本,并检测所述数据的各个副本是否发生故障。
[0040]在本发明的可选实施例中,扫描模块510可以每扫描到一条数据就交给检测模块520检测,在检测模块520检测完该条数据后,再扫描下一条数据,或者,也可以每扫描到一条数据后将该条数据的相关信息传送给检测模块520,然后再继续扫描下一条数据,具体本发明不作限定。
[0041]可选地,所述检测模块520可以包括:读取模块,用于获取所述第一数据节点中存储的所述数据,以及从存储所述数据的副本的其余一个或多个第二数据节点上分别读取所述数据的各个副本;获取模块,用于分别获取所述第一数据节点中存储的所述数据的第一数据签名,以及读取的各个所述副本的第二数据签名;判断模块,用于判断获取的所述第一数据签名和各个所述第二数据签名是否完全相同,检测所述数据的各个副本是否发生故障。
[0042]根据本发明的实施例,所述数据存储的检测设备500还可以包括一个或者多个可选模块,以实现额外或者附加的功能,然而这些可选模块对于实现本发明的目的而言并非是不可或缺的,根据本发明的实施例的数据存储的检测设备500完全可以在没有这些可选模块的情况下,实现本发明的目的。这些可选模块尽管未在图5中示出,但它们与上述各模块之间的连接关系可以由本领域技术人员根据下述教导而容易地得出。
[0043]可选地,在本发明的实施例中,所述设备500还包括:写入模块530,用于在所述检测模块检测到其中一个或多个副本丢失时,将所述数据重新写入到存储丢失副本的数据节点。
[0044]根据本发明的第三方面,还提供了 一种分布式存储系统600,所述分布式存储系统包括如上所述的根据本发明的各实施例的数据存储的检测设备。
[0045]可选地,如上所述的根据本发明的各实施例的数据存储的检测设备可以位于分布式存储系统600的数据节点610上,或者,也可以作为一个单独的与数据节点610相连的设备,通过与数据节点610进行消息交互完成上述功能。
[0046]可选地,如图6所示,分布式存储系统600还可以包括:接入节点620,所述接入节点620可以包括:第一接收模块,用于接收数据写入请求;发送模块,用于所述分布式存储系统的N个数据节点发送副本写入请求,其中,N为大于I的整数;第二接收模块,用于接收所述N个数据节点返回的成功应答;确定模块,用于在所述第二接收模块在第一预定时间内接收到所述N个数据节点中的η个数据节点返回的成功应答时,确定所述请求写入的数据能够成功写入,以及如果所述第二接收模块在第二预定时间内全部接收到所述N个数据节点中的其余Ν-η个数据节点返回的成功应答,则确定所述请求写入的数据的副本完整,否则,确定所述请求写入的数据的副本不完整,对所述请求写入的数据的副本进行修复。
[0047]在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最在实施方式。
[0048]在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
[0049]类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循【具体实施方式】的权利要求书由此明确地并入该【具体实施方式】,其中每个权利要求本身都作为本发明的单独实施例。
[0050]本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
[0051]此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
[0052]本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的浏览器客户端中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
[0053]应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
【权利要求】
1.一种数据存储的检测方法,所述方法包括: 对分布式存储系统中的第一数据节点中存储的各条数据进行扫描; 对于当前扫描到的数据,获取所述扫描到的数据存储在所述分布式存储系统的其余一个或多个第二数据节点中的副本,并检测所述数据的各个副本是否发生故障。
2.根据权利要求1所述的方法,其中,对分布式存储系统中的第一数据节点中存储的各条数据进行扫描的步骤包括: 对记录所述第一数据节点中写入的每条数据的相关信息进行扫描,获取每条所述数据的相关信息,其中,所述相关信息包括:所述数据的数据标识、及存储所述数据的其余一个或多个副本的第二数据节点的标识信息。
3.根据权利要求1所述的方法,其中,获取所述扫描到的数据存储在所述分布式存储系统的其余一个或多个第二数据节点中的副本,并检测所述数据的各个副本是否发生故障的步骤包括: 获取所述第一数据节点中存储的所述数据,并获取所述数据的第一数据签名; 从存储所述数据的副本的其余所述一个或多个第二数据节点上分别读取所述数据的各个副本; 分别获取读取的各个所述副本的第二数据签名; 通过判断获取的所述第一数据签名和各个所述第二数据签名是否完全相同,检测所述数据的各个副本是否发生故障。
4.根据权利要求1-3中任一项所述的方法,其中,如果检测到所述数据的一个或多个副本发生故障,所述方法还包括: 将所述数据重新写入到存储发生故障的副本的数据节点。
5.根据权利要求1-3中任一项所述的方法,其中,所述方法还包括: 所述分布式存储系统中的一个接入节点接收到数据写入请求; 所述接入节点向所述分布式存储系统的N个数据节点发送副本写入请求,其中,N为大于I的整数; 在第一预定时间内,所述接入节点接收到所述N个数据节点中的η个数据节点返回的成功应答,确定所述请求写入的数据能够成功写入,等待所述N个数据节点中其余Ν-η个数据节点的成功应答,其中,η为大于O且小于N的整数; 在第二预定时间内,如果所述接入节点全部接收到所述Ν-η个数据节点返回的成功应答,则确定所述请求写入的数据的副本完整,否则,确定所述请求写入的数据的副本不完整,对所述请求写入的数据的副本进行修复。
6.一种数据存储的检测设备,所述设备包括: 扫描模块,用于对分布式存储系统中的第一数据节点中存储的各条数据进行扫描; 检测模块,用于对所述扫描模块当前扫描到的数据进行检测,获取扫描到的所述数据存储在所述分布式存储系统的其余一个或多个第二数据节点中的各个副本,并检测所述数据的各个副本是否发生故障。
7.根据权利要求6所述的设备,所述检测模块包括: 读取模块,用于获取所述第一数据节点中存储的所述数据,以及从存储所述数据的副本的其余一个或多个第二数据节点上分别读取所述数据的各个副本;获取模块,用于分别获取所述第一数据节点中存储的所述数据的第一数据签名,以及读取的各个所述副本的第二数据签名; 判断模块,用于判断获取的所述第一数据签名和各个所述第二数据签名是否完全相同,检测所述数据的各个副本是否发生故障。
8.根据权利要求6或7所述的设备,所述设备还包括: 写入模块,用于在所述检测模块检测到其中一个或多个副本发生故障时,将所述数据重新写入到存储发生故障的副本的数据节点。
9.一种分布式存储系统,其中,包括如权利要求6-8任一项所述的数据存储的检测设备。
10.根据权利要求9所述的系统,其中,所述系统还包括:接入节点,所述接入节点包括: 第一接收模块,用于接收数据写入请求; 发送模块,用于所述分布式存储系统的N个数据节点发送副本写入请求,其中,N为大于I的整数; 第二接收模块,用于接收所述N个数据节点返回的成功应答; 确定模块,用于在所述第二接收模块在第一预定时间内接收到所述N个数据节点中的η个数据节点返回的成功应答时,确定所述请求写入的数据能够成功写入,以及如果所述第二接收模块在第二预定时间内全部接收到所述N个数据节点中的其余Ν-η个数据节点返回的成功应答,则确定所述请求写入的数据的副本完整,否则,确定所述请求写入的数据的副本不完整,对所述请求写入的数据的副本进行修复。
【文档编号】G06F11/14GK103744745SQ201310683911
【公开日】2014年4月23日 申请日期:2013年12月13日 优先权日:2013年12月13日
【发明者】王 锋 申请人:北京奇虎科技有限公司, 奇智软件(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1