CN106776146A - 一种数据校验方法、装置及*** - Google Patents
一种数据校验方法、装置及*** Download PDFInfo
- Publication number
- CN106776146A CN106776146A CN201611249863.8A CN201611249863A CN106776146A CN 106776146 A CN106776146 A CN 106776146A CN 201611249863 A CN201611249863 A CN 201611249863A CN 106776146 A CN106776146 A CN 106776146A
- Authority
- CN
- China
- Prior art keywords
- data block
- data
- redundant node
- back end
- multiple data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1012—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供了一种数据校验方法、装置及***。通过包含于冗余节点中的数据校验装置接收应用服务器发送的多个数据块,将所述多个数据块保存为多个数据块副本,不会直接计算其校验数据,以保证纠删码计算之前的所述目标数据的可靠性。当所述多个数据块副本的数量达到预设数值时,所述冗余节点对所述多个数据块副本进行纠删码计算以获得校验数据。避免了频繁进行纠删码计算,减轻了冗余节点的工作负荷。另外,冗余节点可以将其计算获得的校验数据存储在本地,不用再发送给其他存储节点,减少了存储节点之间的数据交互次数。
Description
技术领域
本发明实施例涉及存储技术领域,尤其涉及一种数据校验方法、装置及***。
背景技术
纠删码数据冗余保护机制是应用于分布式存储***的一种数据冗余设计。它相较于传统的多副本、快照、镜像等数据冗余设计更为高效。采用纠删码计算技术,目标数据被划分为若干数据块,基于这些数据块计算获得校验块。如果出错的数据块与出错的校验块的个数之和小于或者等于校验块的个数,可以通过重构算法恢复出出错的数据块。
由于***延时或者网络传输不稳定等问题,由所述目标数据划分而成的数据块可能无法在同一时间全部发送至分布式存储***的各个存储节点。然而,根据纠删码数据冗余保护机制的设计原理,只要分布式存储***获取到部分数据,就会进行纠删码计算和校验数据的存储。因此纠删码计算的次数和校验数据的存储次数非常频繁。如果所述分布式存储***在某个存储节点中凑满所有的数据块之后再计算校验数据,若这个存储节点发生故障,其积累的数据块就会全部丢失,数据的可靠性又不能得到保证。
发明内容
本发明公开了一种数据校验方法、装置和***,以实现基于所有数据块进行纠删码计算之前的数据多副本存储,提高分布式存储***对数据存储的可靠性。
第一方面提供一种数据校验方法,所述方法应用于分布式存储***中,所述分布式存储***包括至少两个数据节点和至少一个冗余节点。所述方法包括:所述冗余节点接收应用服务器发送的多个数据块,将所述多个数据块保存为多个数据块副本。当所述多个数据块副本的数量达到预设数值时,所述冗余节点对所述多个数据块副本进行纠删码计算以获得校验数据。所述多个数据块存储于所述至少两个数据节点中。
冗余节点将这些数据块作为数据块副本保存下来,而这些数据块保存在所述分布式存储***的数据节点中,当在数据块副本的总数达到预设数值时,再进行纠删码计算从而获得校验数据。避免了频繁进行纠删码计算,减轻了冗余节点的工作负荷。因此,无论在纠删码计算之前还是在纠删码计算之后都可以保证数据的可靠性。另外,冗余节点可以将其计算获得的校验数据存储在本地,不用再发送给其他存储节点,就减少了存储节点之间的数据交互次数。
基于第一方面,在第一种实现方式中,所述方法还包括:所述冗余节点在获得所述校验数据之后删除所述数据块副本。在冗余节点获得校验数据之前,数据节点中的每个数据块在冗余节点中都保存有数据块副本,即使数据节点中的数据块丢失,依然可以利用冗余节点中存储的数据块副本进行纠删码计算。在获得校验数据之后,考虑到冗余节点的存储空间的利用率,冗余节点可以删除所述数据块副本。因为即使数据节点的数据块丢失,也可以通过所述校验数据恢复出丢失的数据块。
结合第一方面或者第一方面的第一种实现方式,在第二种实现方式中,所述至少两个数据节点中的每个数据节点存储所述多个数据块中的一个数据块,并且每个数据节点存储的数据块不相同。每一个数据节点存储所述多个数据块中的一个数据块,将目标数据分散存储于多个数据节点上,提高了目标数据存储的可靠性。
结合第一方面或者第一方面的第一种或第二种实现方式,在第三种实现方式中,所述分布式存储***还包括其他冗余节点,所述方法还包括:所述冗余节点将所述校验数据划分为多个校验块;所述冗余节点将除本地存储的一个校验块之外的其它校验块发送至所述其他冗余节点。冗余节点为多个时,任意一个冗余节点都可以作为通过纠删码计算获得校验数据的存储节点。
结合第一方面或者第一方面的第一种至第三种实现方式中的任一种实现方式,在第四种实现方式中,所述方法还包括:所述冗余节点统计接收所述多个数据块的时间段的时长,所述时长未达到预设的时长阈值,所述时间段结束于所述冗余节点接收所述多个数据块中的最后一个数据块。
结合第一方面或者第一方面的第一种至第四种实现方式中的任一种实现方式,在第五种实现方式中,所述预设数值是根据所述分布式存储***的校验模式确定的。
第二方面提供一种数据校验方法,所述方法应用于分布式存储***中,所述分布式存储***包括至少两个数据节点和至少一个冗余节点,所述方法包括:所述冗余节点接收应用服务器发送的多个数据块,将所述多个数据块保存为多个数据块副本,当所述多个数据块副本的数量未达到预设数值,且所述冗余节点接收所述多个数据块的时间段的时长达到时长阈值时,所述冗余节点对所述多个数据块副本进行纠删码计算以获得校验数据,所述时间段结束于所述冗余节点接收所述多个数据块的最后一个数据块。所述多个数据块存储于所述至少两个数据节点中。
冗余节点将这些数据块作为数据块副本保存下来,而这些数据块保存在所述分布式存储***的数据节点中。当在数据块副本的总数未达到预设数值,且所述冗余节点接收所述多个数据块的时间段的时长达到时长阈值时,对所述多个数据块副本进行纠删码计算从而获得校验数据。避免了频繁进行纠删码计算,减轻了冗余节点的工作负荷。因此,无论在纠删码计算之前还是在纠删码计算之后都可以保证数据的可靠性。另外,第二方面提供的数据校验方法和第一方面相比,避免了由于冗余节点获取数据块的等待时间过长导致数据块丢失的风险。
结合第二方面,在第一种实现方式中,所述冗余节点在获得所述校验数据之后删除所述数据块副本。在冗余节点获得校验数据之前,数据节点中的每个数据块在冗余节点中都保存有数据块副本,即使数据节点中的数据块丢失,依然可以利用冗余节点中存储的数据块副本进行纠删码计算。在获得校验数据之后,考虑到冗余节点的存储空间的利用率,冗余节点可以删除所述数据块副本。因为即使数据节点的数据块丢失,也可以通过所述校验数据恢复出丢失的数据块。
结合第二方面或者第二方面的第一种实现方式,在第二种实现方式中,所述至少两个数据节点中的每个数据节点存储所述多个数据块中的一个数据块,并且每个数据节点存储的数据块不相同。每一个数据节点存储所述多个数据块中的一个数据块,将目标数据分散存储于多个数据节点上,提高了目标数据存储的可靠性。
结合第二方面或者第二方面的第一种实现方式或者第二种实现方式,在第三种实现方式中,所述分布式存储***还包括其他冗余节点,所述方法还包括:所述冗余节点将所述校验数据划分为多个校验块;所述冗余节点将除本地存储的一个校验块之外的其它校验块发送至所述其他冗余节点。冗余节点为多个时,任意一个冗余节点都可以作为通过纠删码计算获得校验数据的存储节点。
结合第二方面或者第二方面的第一种至第三种实现方式中的任一种实现方式,在第四种实现方式中,所述预设数值是根据所述分布式存储***的校验模式确定的。
第三方面提供一种数据校验装置,所述数据校验装置位于分布式存储***的冗余节点中,所述分布式存储***还包括至少两个数据节点;所述数据校验装置包括用于执行第一方面或第一方面的任一种可能实现方式中的数据校验方法的各个模块,所述模块可以通过硬件实现,也可以通过硬件执行相应的软件实现。
第四方面提供一种数据校验装置,所述数据校验装置位于分布式存储***的冗余节点中,所述分布式存储***还包括至少两个数据节点;所述数据校验装置包括用于执行第二方面或第二方面的任一种可能实现方式中的数据校验方法的各个模块,所述模块可以通过硬件实现,也可以通过硬件执行相应的软件实现。
第五方面提供一种冗余节点,所述冗余节点位于分布式存储***中,所述分布式存储***还包括至少两个数据节点;所述冗余节点包括处理器和接口,所述接口用于与应用服务器通信;所述处理器用于执行第一方面或第一方面的任意可能的实现方式中的方法。
第六方面提供一种冗余节点,所述冗余节点位于分布式存储***中,所述分布式存储***还包括至少两个数据节点;所述冗余节点包括处理器和接口,所述接口用于与应用服务器通信;所述处理器用于执行第二方面或第二方面的任意可能的实现方式中的方法。
第七方面提供一种数据校验***,包括应用服务器、至少两个数据节点和至少一个冗余节点;每个数据节点分别与应用服务器通信连接,至少一个冗余节点与应用服务器通信连接,所述应用服务器,用于发送多个数据块至所述至少两个数据节点,并且将所述多个数据块发送至所述冗余节点。所述冗余节点与第五方面或第五方面的任意可能的实现方式中提供的冗余节点是一样的。所述至少两个数据节点中的每个数据节点,用于接收并存储所述应用服务器发送的所述多个数据块中的一个数据块,每个数据节点存储的数据块不相同。
第八方面提供一种数据校验***,包括应用服务器、至少两个数据节点和至少一个冗余节点;每个数据节点分别与应用服务器通信连接,至少一个冗余节点与应用服务器通信连接,所述应用服务器,用于发送多个数据块至所述至少两个数据节点,还用于将所述多个数据块发送至所述冗余节点;所述冗余节点与第六方面或第六方面的任意可能的实现方式中提供的冗余节点是一样的。所述至少两个数据节点中的每个数据节点,用于接收所述应用服务器发送的所述多个数据块中的一个数据块,每个数据节点存储的数据块不相同。
所述冗余节点接收应用服务器发送的多个数据块,将所述多个数据块保存为多个数据块副本。当所述多个数据块副本的数量达到预设数值时,所述冗余节点对所述多个数据块副本进行纠删码计算以获得校验数据。避免了频繁进行纠删码计算,减轻了冗余节点的工作负荷。因此,无论在纠删码计算之前还是在纠删码计算之后都可以保证数据的可靠性。另外,冗余节点可以将其计算获得的校验数据存储在本地,不用再发送给其他存储节点,减少了存储节点之间的数据交互次数。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍。
图1为本发明实施例提供的一种分布式存储***的架构示意图;
图2为本发明实施例提供的一种应用服务器110的结构示意图;
图3为本发明实施例提供的一种存储节点120的结构示意图;
图4为本发明实施例提供的一种数据校验方法的流程图;
图5为本发明实施例提供的另一种数据校验方法的流程图;
图6为本发明实施例提供的一种数据校验装置的结构图;
图7为本发明实施例提供的另一种数据校验装置的结构图;
图8为本发明实施例提供的一种冗余节点的结构图;
图9为本发明实施例提供的另一种冗余节点的结构图;
图10a为本发明实施例提供的一种数据校验***的结构图;
图10b为本发明实施例提供的另一种数据校验***的结构图;
图10c为本发明实施例提供的另一种数据校验***的结构图;
图11a为本发明实施例提供的另一种数据校验***的结构图;
图11b为本发明实施例提供的另一种数据校验***的结构图;
图11c为本发明实施例提供的另一种数据校验***的结构图。
具体实施方式
下面将结合附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。请参见图1,图1为本发明实施例提供的一种分布式存储***的架构示意图。如图1所示,分布式存储***包括应用服务器110和若干个存储节点120,应用服务器110与各存储节点120进行通信,并且任意两个存储节点120之间也可以通信。
应用服务器110可以是任何计算设备,如服务器、台式计算机等等。应用服务器110可以与终端设备(图1中未示出)连接,用户通过所述终端设备向应用服务器110发送目标数据。应用服务器110将所述目标数据划分为若干个数据块,然后将每个数据块发送给一个存储节点120存储。根据由所述目标数据划分出的数据块的数量是否达到预设数值,应用服务器110确定采用何种方式处理这些数据块。一种情况是,如果数据块的数量达到预设数值,那么应用服务器110对这些数据块进行纠删码计算,获得校验数据。然后,应用服务器110将数据块发送给存储节点120中的数据节点存储,将校验数据发送给存储节点120中的冗余节点存储。当冗余节点的个数为多个时,应用服务器110按照冗余节点的个数划分校验数据,获得多个校验块,分别发送每个校验块至一个冗余节点。另一种情况是,如果数据块的数量未达到预设数值,然而该应用服务器110获取数据块的等待时间超时,应用服务器110仍然需要对获取的所有数据块副本进行纠删码计算,获取校验数据。在这种情况下,应用服务器110进行纠删码计算的时候对获取的所有数据块和包含默认数据的数据块一起进行纠删码计算,包含默认数据的数据块的个数与应用服务器110获取的数据块的个数总和为所述预设数值。再一种情况是,如果数据块的数量没有达到预设数值,那么此时应用服务器110不会直接对这些数据块进行纠删码计算,而是将各个数据块发送给存储节点120中的数据节点存储。并且应用服务器110在将各个数据块发送数据节点时,也需要将所有的数据块发送给冗余节点。冗余节点将这些数据块作为副本保存下来,以保证所述目标数据的可靠性。
本实施例按存储对象的不同,对所述分布式存储***包含的存储节点120进行分类,将用于存储所述目标数据的数据块的存储节点120称为数据节点,将用于存储校验数据的存储节点120称为冗余节点。这种分类仅仅是存储对象的不同,数据节点和冗余节点在物理结构上并无不同。另外,每个存储节点120都具有节点标识,所述节点标识用于唯一识别所述存储节点120,所述节点标识可以是数字,也可以是字母,还可以是数字和字母的组合。
下面介绍应用服务器110和存储节点120的物理结构。
请参见图2,图2为本发明实施例提供的一种应用服务器110的结构示意图。如图2所示,应用服务器110主要包括处理器(英文:processor)211、存储器(英文:memory)212、通信总线(简称总线)213以及通信接口(英文:communication interface)214。处理器211、存储器212以及通信接口214通过通信总线213完成相互间的通信。
通信接口214,用于与存储节点120通信。
存储器212,用于临时存储用户发送的目标数据,存储器212可能包含高速RAM存储器,也可能还包括非易失性存储器(英文:non-volatile memory),例如至少一个磁盘存储器。可以理解的是,存储器212可以为随机存储器(英文:Random-Access Memory,RAM)、磁碟、硬盘、固态硬盘(英文:solid state disk,SSD)或者非易失性存储器等各种可以存储程序代码的机器可读介质。
处理器211可能是一个中央处理器(英文:central processing unit,CPU),用于划分目标数据,将划分的数据块存储至存储器212中,以及用于发送数据块至数据节点。另外,处理器211还用于判断数据块的个数是否达到预设数值,在判断出数据块的个数达到预设数值时,对所有数据块进行纠删码计算,获取校验数据,并用于发送校验数据至冗余节点等等。
请参见图3,图3为本发明实施例提供的一种存储节点120的结构示意图。存储节点120可以是存储服务器,所述存储服务器包括控制器310,控制器310包含接口311、接口312、处理器314、存储器313和至少一个硬盘。如图3所示,存储节点120包括控制器310和一个或多个硬盘320。其中,控制器310至少包括接口311、接口312、存储器313和处理器314。
接口311,用于和应用服务器110通信。接口312,用于和硬盘320通信。处理器314可能是一个中央处理器(英文:central processing unit,CPU)。
存储器313,用于临时存储从应用服务器110接收的数据块。当该存储节点为冗余节点时,存储器313还用于存储校验数据,或者存储由校验数据划分后获得的校验块。
处理器314,用于将存储器313中的数据块发送给硬盘320存储。当该存储节点为冗余节点时,处理器314还用于判断累计获取的数据块的个数是否达到预设数值。在判断出累计获取的数据块的个数达到所述预设数值时,或者在未达到所述预设数值,然而等待时间较长时,进行纠删码计算,获得校验数据。
下面结合图1所示的应用场景以及图3所示的存储节点,对本发明实施例公开的分布式存储***中的数据校验方法进行具体的描述。请参见图4,图4为本发明实施例提供的一种数据校验方法的流程图。如图4所示,所述数据校验方法包括如下步骤。
S410、应用服务器110接收用户发送的目标数据。所述目标数据可能是用户通过终端设备发送的,可以是文件,也可以是块数据,也可能是用户直接在应用服务器110中输入的。应用服务器110可能一次性接收所述目标数据,也可能是间断性地分多次接收所述目标数据。另外,用户发送目标数据给应用服务器110时,如果是通过块接口与应用服务器110通信,还会发送所述目标数据的逻辑地址给应用服务器110。所述逻辑地址包括卷的标识、逻辑块地址(英文:logical block address,LBA)和长度(英文:length)。逻辑块地址为目标数据存储于卷中的首地址。例如,目标数据是长度为4MB的文件,所述目标数据的逻辑地址为卷A、00001和4M。其中卷A为卷的标识,00001为逻辑块地址,4MB为所述目标数据的长度。在其他情况中,如果用户发送目标数据给应用服务器110,是通过文件接口与应用服务器110通信,同时还会发送目标数据在文件中的偏移地址给应用服务器110,偏移地址包括文件名、偏移位置和目标数据长度。如果用户发送目标数据给应用服务器110,是通过对象接口与应用服务器110通信,同时还会发送目标数据在对象中的偏移地址给应用服务器110,偏移地址包括对象名、偏移位置和目标数据长度。
S411、应用服务器110将所述目标数据划分为若干个数据块,为每个数据块分配数据块标识。
应用服务器110按照预设尺寸将所述目标数据划分为若干个数据块。然后,应用服务器110判断这些数据块的数量是否达到预设数值,如果达到预设数值,则计算这些数据块的校验数据。如果没有达到所述预设数值,则执行步骤S412。本实施例重点讨论应用服务器110划分出的数据块的数量没有达到所述预设数值的情况。
应用服务器110按照预设尺寸划分目标数据时,会获得每个划分出的数据块的偏移地址,该偏移地址为数据块位于所述目标数据中的位置。例如,所述预设尺寸为1MB,那么所述目标数据可以划分为4个数据块。
应用服务器110为每个数据块分配数据块标识。所述数据块标识用于唯一识别所述数据块,所述数据块标识可以是数字,也可以是字母,还可以是数字和字母的组合。示例性的,一种实施方式是,所述数据块标识为卷的标识、逻辑块地址以及偏移地址的组合,每两个相邻的数据块的偏移地址间的地址范围为预设尺寸的长度。如表1所示。4个数据块的标识如表1所示。
卷的标识 | 逻辑块地址 | 偏移地址 |
卷A | 00001 | 00001 |
卷A | 00001 | 00005 |
卷A | 00001 | 00009 |
卷A | 00001 | 00013 |
表1
另一种实施方式是,所述数据块标识为卷的标识、逻辑块地址以及数据块的序号的组合,如表2所示。按照这种实施方式,应用服务器110中还需要保存每个数据块的序号与所述数据块的偏移地址之间的对应关系。
卷的标识 | 逻辑块地址 | 序号 |
卷A | 00001 | 1 |
卷A | 00001 | 2 |
卷A | 00001 | 3 |
卷A | 00001 | 4 |
表2
所述预设数值是根据所述分布式存储***预先设定的校验模式确定的。例如,所述校验模式可以是5+1模式,也可以是6+2模式。5+1模式是指根据5个数据块计算获得1个校验块,在这种模式下***容忍失效的数据块的个数为1。当任意一个数据块丢失时,可以利用其余4个数据块和1个校验块恢复出所述丢失的数据块。此时,所述预设数值为5。6+2模式是指根据6个数据块计算获得2个校验块,在这种模式下***容忍失效的数据块的个数为2。当任意2个数据块丢失时,可以利用其余3个数据块和2个校验块恢复出所述丢失的数据块。此时,所述预设数值为6。
S412、应用服务器110将划分出的每个数据块发送至数据节点和冗余节点。在本实施例中,对于划分出的每个数据块,应用服务器110既需要将这个数据块发送给一个数据节点,也需要将这个数据块发送给冗余节点。这就使得每个数据块在冗余节点中保存有一个数据块副本,从而保证数据块的可靠性。
应用服务器110将一个数据块封装在一个写数据消息中,将所述写数据消息分别发送给数据节点和冗余节点。或者,应用服务器110将一个数据块以及所述数据块的数据块标识封装在一个写数据消息中,再发送给数据节点和冗余节点。由于本实施例提供的分布式存储***包含有多个数据节点,因此应用服务器110需要从所述多个数据节点为每个数据块选择一个数据节点。
一种实施方式是,应用服务器110在初始化的过程中,获取逻辑分区映射表。逻辑分区包括多个子分区,所述逻辑分区映射表包括每个子分区与数据节点的节点标识之间的对应关系。应用服务器110将每个数据块的数据块标识作为预设哈希算法的输入项,进行哈希运算,从而获取每个数据块的数据块标识的哈希值。再根据每个哈希值所在的子分区,以识别出每个数据块的哈希值所在的子分区对应的存储节点。
另一种实施方式是,逻辑分区的一个子分区可能对应多个数据节点,那么,应用服务器110在根据每个数据块的数据块标识获得哈希值之后,识别出所述哈希值所在的子分区,并且确定所述子分区对应的多个数据节点。应用服务器110可以按照预定顺序将哈希值相同的数据块分别发送给所述子分区对应的数据节点。预定顺序的实现有多种情况,一种情况是,所述子分区对应的多个数据节点的标识形成环形链表,每一个数据节点在环形链表中是一个数据节点的前一个数据节点,也是另外一个数据节点的后一个数据节点,应用服务器110选择位于环形链表中的一个数据节点作为首节点,然后按照环形链表的逆时针顺序或者顺时针顺序,从首节点开始,将数据块分别发送给环形链表中的一个数据节点。另一种情况是,所述子分区对应的多个数据节点形成条状链表,除首节点以及末节点之外,每一个数据节点在条状链表中是一个数据节点的前一个数据节点,也是另外一个数据节点的后一个数据节点,从首节点开始,然后从首往末的顺序,应用服务器110将数据块分别发送给条状链表中的一个数据节点。
再一种实施方式是,由于数据块的数据块标识不同,因此,应用服务器110将每个数据块的数据块标识作为预设哈希算法的输入项,计算每个数据块的数据块标识的哈希值,直接保存数据块的哈希值与数据节点的节点标识之间的对应关系。根据所述对应关系确定每个数据块的数据块标识的哈希值所对应的数据节点的标识,然后将所述数据块发送给其对应的数据节点。
再一种实施方式是,应用服务器110按照轮询的方式分别将每个数据块发送给数据节点,然后保存数据块的数据块标识与存储所述数据块的数据节点的标识之间的对应关系。应用服务器110按照负载均衡的原则,每一轮遍历没有接收到数据块的所有数据节点,选择负载最少的数据节点接收一个数据块,直到划分的多个数据块分别发送给一个数据节点为止。
另外,应用服务器110还需要将每个发送给数据节点的数据块也发送给冗余节点,使得每个数据块在冗余节点中都保存有一个数据块副本。
S420、冗余节点存储各个数据块副本。这些数据块副本可以保存在存储器313中也可以保存在硬盘320中。
S430、数据节点接收并存储应用服务器110发送的数据块。
S440、冗余节点判断其存储的数据块的总数达到所述预设数值时,进行纠删码计算以获取校验数据。
随着应用服务器110向数据节点发送的数据块的增多,冗余节点中积累的数据块副本也不断增加,当数据块副本的数量达到所述预设数值时,冗余节点对这些数据块副本进行纠删码计算从而获得校验数据。这里的预设数值与S411中描述的预设数值一致。
在实际应用中,应用服务器110对目标数据划分后所得到的数据块往往无法在同一时间全部发送至分布式存储***的各个数据节点。或者应用服务器110接收的所述目标数据较小,划分出的多个数据块没有达到上面描述的预设数值。按照纠删码数据冗余保护机制的设计原理,只要所述分布式存储***的某个数据节点接收到数据块,冗余节点就会从各个数据节点收集数据块,计算其校验数据。从而造成冗余节点反复计算并存储校验数据,浪费计算资源和存储资源。
本发明实施例中,应用服务器110不但要将各个数据块发送给数据节点,还要将这些数据块发送给冗余节点。冗余节点将这些数据块作为数据块副本保存下来,但不会直接计算其校验数据。而是在数据块副本的总数达到预设数值时,再进行纠删码计算从而获得校验数据。避免了频繁进行纠删码计算,减轻了其工作负荷。另外,冗余节点可以将其计算获得的校验数据存储在本地,不用再发送给其他存储节点,就减少了存储节点之间的数据交互次数。
S460、当冗余节点获得校验数据之后,删除其存储的数据块副本。在冗余节点获得校验数据之前,数据节点中的每个数据块在冗余节点中都保存有数据块副本,即使数据节点中的数据块丢失,依然可以利用冗余节点中存储的数据块副本进行纠删码计算。然而在获得校验数据之后,考虑到冗余节点的存储空间的利用率,冗余节点可以删除所述数据块副本。因为即使数据节点的数据块丢失,也可以通过所述校验数据恢复出丢失的数据块。
另外,在上述实施例中,冗余节点可能不止一个。在这种情况下,任意一个冗余节点都可以作为计算校验数据的存储节点,执行步骤S440以及S460。当校验数据计算完成之后,所述冗余节点可以按照冗余节点的个数将所述校验数据划分为多个校验块,将其中一个校验块保存在本地,将其余的校验块分别发送给其他冗余节点。
另外,冗余节点为多个时,应用服务器110可以同时发送数据块到其它冗余节点,其他冗余节点以存储数据块为多个副本。例如,发送数据块分别到2个冗余节点,则数据块存储为副本的个数为2个,对于特别重要的目标数据,可以选择更多的冗余节点存储数据块为多个副本。
请参见图5,图5为本发明实施例提供的另一种数据校验方法的流程图。如图5所示,所述数据校验方法方法包括如下步骤。
S510、应用服务器110接收用户发送的目标数据。本步骤与图4所示的步骤S410类似,这里不再赘述。
S511、应用服务器110划分所述目标数据,获得若干个数据块。本步骤与图4所示的步骤S411类似,这里不再赘述。
S512、应用服务器110将划分出的每个数据块发送至数据节点和冗余节点。本步骤与图4所示的步骤S412类似,这里不再赘述。
S520、冗余节点存储数据块。本步骤与图4所示的步骤S420类似,这里不再赘述。
S530、数据节点接收并存储应用服务器110发送的数据块。本步骤与图4所示的步骤S430类似,这里不再赘述。
S521、冗余节点判断出其存储的数据块副本的总数尚未达到所述预设数值时,然而该冗余节点获取数据块的等待时间超时,冗余节点仍然需要对存储的所有数据块副本进行纠删码计算,获取校验数据。在这种情况下,冗余节点进行纠删码计算的时候对获取的所有数据块和包含默认数据的数据块一起进行纠删码计算,包含默认数据的数据块的个数与冗余节点获取的数据块的个数总和可以达到所述预设数值。
图5所示的实施例与图4所示的实施例的不同之处在于,本实施例考虑到在实际应用中如果冗余节点获取数据块的等待时间过长,数据块丢失的风险可能越大。因此,在图5所示的实施例中,冗余节点判断获取数据块的等待时间是否超过预设时间,根据判断结果决定是否进行纠删码计算。所述等待时间可以从所述冗余节点接收第一个数据块副本开始进行计时,经过预设时长之后,对所述等待时间内接收到的所有数据块副本进行纠删码计算,获得校验数据。或者,所述等待时间可以从冗余节点最后一次获取数据块后开始计时,经过预设时长后,对所述等待时间内接收到的所有数据块副本进行纠删码计算,获得校验数据。
本实施方式降低了冗余节点由于长时间等待而造成数据块丢失的风险,提高了数据存储的可靠性。
另外,与图4所示的实施例类似,本实施例在计算校验数据之后还可以包括步骤S522:冗余节点删除存储的数据块副本。该步骤与图4所示的步骤S460类似,这里不再赘述。
在图5所示的实施例中,由于冗余节点尚未等到其存储的数据块副本的总数达到预设数值就根据这些数据块副本计算出校验数据。因此,如果后续冗余节点收到新的数据块,仍然需要重新计算校验数据。然而,通常情况下,冗余节点在计算校验数据之后都会删除其存储的数据块副本。因此,当所述冗余节点接收新的数据块之后,需要从其他数据节点中获得之前删除的数据块。
由于应用服务器110在将数据块发送给冗余节点时,也可以将所述数据块的数据块标识发送给所述冗余节点,因此冗余节点虽然删除了数据块副本,但可以仍然保留数据块副本的数据块标识,并根据数据块标识确定存储所述数据块的数据节点。具体的,一种实施方式是冗余节点根据数据块的数据块标识进行哈希运算,获得哈希值,然后根据所述获得哈希值在事先保存的逻辑分区映射表中进行查询,从而获得所述哈希值所在的子分区,进一步地根据所述子分区确定其对应的数据节点的节点标识。在其他实施方式中,冗余节点可以根据新的数据块的数据块标识,按照预先规定的数据块标识的生成规则,推定出删除的数据块的数据块标识,再对删除的数据块的数据块标识进行哈希运算,获得删除的数据块的哈希值,并按照前面描述的方式获得哈希值对应的子分区以及子分区对应的数据节点的标识。在这种实施方式中,冗余节点则不需要保存删除的数据块副本的标识。其中一种推定删除的数据块的数据块标识的情况为,收到的新的数据块的数据块标识为卷的标识、逻辑块地址以及偏移地址,每一个数据块的数据块标识中的卷的标识是相同的,逻辑块地址也是相同的。因此只要获得删除的数据块的偏移地址,就能获得每个删除的数据块的数据块标识。冗余节点根据新的数据块的偏移地址以及所述预设尺寸,可以获得与所述新的数据块的偏移地址相邻的数据块的偏移地址,依此类推,再获得其他删除的数据块的偏移地址。另一种推定数据块的数据块标识的情况为,收到的新的数据块的数据块标识为卷的标识、逻辑块地址以及数据块的序号的组合。由于每一个数据块的数据块标识中的卷的标识是相同的,逻辑块地址也是相同的,因此只要获得删除的数据块的序号,就可以获得每个删除的数据块的数据块标识。每一个数据块标识中的序号是按照预设的顺序生成的,因此根据新的数据块的数据块标识中的序号,可以推定出该序号之前的所有序号,进而获得之前删除的数据块的数据块标识。
冗余节点将包括数据块副本的数据块标识的读取请求至各个数据节点,数据节点接收所述读取请求之后,依据数据块的数据块标识获得所述数据块,并发送给冗余节点。冗余节点接收各个数据节点发送的数据块之后,再根据这些数据块以及新接收的数据块计算校验数据。校验数据计算完成之后,冗余节点可以再次删除数据块副本,这里不再赘述。
当数据节点接收并存储数据块之后,数据节点中存储的数据块可能会被修改。对于用于修改之前存储的数据的目标数据,应用服务器110的处理方式与基于图4所示的实施例类似,这里不再赘述。与图4所示的实施例不同的是,数据节点存储修改的数据块的同时,可以保存修改的数据块的版本。在本实施方式中执行完步骤S440,即冗余节点获得校验数据之后,冗余节点会发送完成消息至接收到修改的数据块的数据节点,接收到完成消息的数据节点删除修改之前存储的旧的数据块。一种情况是,冗余节点获得校验数据后,分别对每一个修改的数据块的数据块标识进行哈希计算,获得若干个哈希值,识别出每一个哈希值所在的子分区,进而确定每个修改的数据块的哈希值所在的子分区唯一对应的数据节点,分别发送每一个完成消息至上述子分区唯一对应的数据节点,接收到该完成消息的数据节点,依据修改的数据块的数据块标识和数据版本查询该数据块标识对应的所有数据块,并删除除最新版本之外的其他旧的数据块。
同样地,考虑到冗余节点获取修改的数据块的等待时间过长,数据块丢失的风险越大的情况,冗余节点识别获取的修改的数据块的等待时间是否超过预设时间,决定是否进行纠删码计算。预设时间的开始计时方式可参照图5所示的步骤S521中描述的实现过程,在此不再赘述。需要注意的是,预设时间到达后,冗余节点需要从其他数据节点中读取未修改的数据块。读取数据块的方式可参考基于图5所述的实施例中描述的需要从其他数据节点中获得数据块的实施方式,实现细节类似,在这里不再赘述。在本实施方式中,冗余节点进行纠删码计算,获得校验数据,发送完成消息及之后的技术实现细节,可参照上一段在冗余节点识别存储的所有的修改的数据块达到预设数值后进行纠删码计算的实施方式中的描述,在这里不再赘述。
由于冗余节点存储的修改的数据块的总数未达到预设数值,超时之后,会收到新的修改的数据块,重新进行校验计算。由于上一次纠删码计算,获得校验数据后,冗余节点删除了上一次纠删码计算之前存储的修改的数据块,在本次进行纠删码计算前,冗余节点会从一直没有接收修改的数据块的数据节点中读取未修改的数据块,具体的读取数据块的方式可参考基于图5所述的实施例中描述的需要从其他数据节点中获得数据块的实施方式,实现细节类似,在这里不再赘述。以及,冗余节点也会从上一次删除旧的数据块的数据节点中读取上一次存储的修改的数据块,因为上一次存储的修改的数据块是唯一的最新版本的数据块,与读取其他数据节点中的未修改的数据块的过程是一样的,读取数据块的方式也可参考基于图5所述的实施例中描述的需要从其他数据节点中获得数据块的实施方式,实现细节类似,在这里不再赘述。冗余节点对存储的修改的数据块,读取的未修改的数据块,读取上一次存储的修改的数据块进行纠删码计算,获得校验数据。然后,冗余节点会删除存储的修改的数据块,并发送完成消息至接收到修改的数据块的数据节点,指示数据节点删除未修改的旧的数据块。在本实施方式中,冗余节点发送完成消息及之后的技术实现细节,可参照在冗余节点识别存储的所有的修改的数据块达到预设数值后进行纠删码计算的实施方式中的描述,在这里不再赘述。需要注意的是,如果多次对同一数据块进行修改,冗余节点发送的完成消息中的数据版本必须是最新的数据版本,以保证接收到该完成消息的数据节点删除的数据块是之前修改的所有的数据块,保留最新的数据版本的数据块。
请参见图6,图6为本发明实施例提供的一种数据校验装置的结构图,如图6所示,本发明实施例提供的数据校验装置610位于分布式存储***的冗余节点600中,所述分布式存储***还包括至少两个数据节点;所述数据校验装置610包括接收模块611和处理模块612。接收模块611和处理模块612连接,下面详细介绍数据校验装置610中的每个模块的功能:
接收模块611,用于接收应用服务器110发送的多个数据块,将所述多个数据块保存为多个数据块副本,所述多个数据块存储于所述至少两个数据节点中。本实施方式中接收模块611接收应用服务器110发送的多个数据块的功能可以通过存储服务器中的接口311实现,接收模块611接收应用服务器110发送的多个数据块的功能,可以参考图4所示的步骤S410描述的应用服务器110发送多个数据块的具体细节,在这里不再赘述。以及,接收模块611将所述多个数据块保存为多个数据块副本的功能可以通过存储服务器中的处理器314调用存储器313里面的程序315实现,接收模块611接收应用服务器110发送的多个数据块的功能,可以参考图4所示的步骤S420描述的存储数据块的具体细节,在这不再赘述。
处理模块612,用于当所述多个数据块副本的数量达到预设数值时,对所述数据块副本进行纠删码计算以获得校验数据。本实施方式中的处理模块612对所述数据块副本进行纠删码计算,以获得校验数据的功能,可以通过存储服务器中的处理器314调用存储器313里面的程序315实现,处理模块612对所述数据块副本进行纠删码计算的功能,可以参考图4所示的步骤S440描述的当所述多个数据块副本的数量达到预设数值时,对所述数据块副本进行纠删码计算以获得校验数据的具体细节,在这里不再赘述。
作为一种可选的实施方式,所述处理模块612,还用于在接收模块611获得所述校验数据之后删除所述数据块副本。本实施方式中的处理模块612删除所述数据块副本的功能,可以通过存储服务器中的处理器314调用存储器313里面的程序315实现,处理模块612删除所述数据块副本的功能,可以参考图4所示的步骤S460描述的在获得所述校验数据之后,删除所述数据块副本的具体细节,在这里不再赘述。
作为一种可选的实施方式,所述分布式存储***包括其他数据校验装置610,所述处理模块612,还用于将所述校验数据划分为多个校验块,还用于将本地存储的一个校验块之外的其他校验块发送给所述其他数据校验装置610。本实施方式中的处理模块612划分校验数据,以及发送校验块至其他数据校验装置610的功能,可以通过存储服务器中的处理器314调用存储器313里面的程序315实现,处理模块612划分校验数据,以及发送校验块至其他数据校验装置610的功能,可以参考图4所示的实施例中描述的当冗余节点为多个时,冗余节点在获得所述校验数据之后划分校验数据为多个校验块的具体细节,在这里不再赘述。
作为一种可选的实施方式,所述处理模块612,还用于统计接收所述多个数据块的时间段的时长,所述时长未达到预设的时长阈值,所述时间段结束于所述数据校验装置610接收所述多个数据块的最后一个数据块。本实施方式中的处理模块612统计接收所述多个数据块的时间段的时长的功能,可以通过存储服务器中的处理器314调用存储器313里面的程序315实现。
作为一种可选的实施方式,所述预设数值是根据所述分布式存储***的校验模式确定的。所述校验模式的实现细节可参照图4所示的实施例中描述的具体细节,在这里不再赘述。
请参见图7,图7为本发明实施例提供的另一种数据校验装置的结构图,如图7所示,本发明实施例提供的数据校验装置710位于分布式存储***的冗余节点700中,所述分布式存储***还包括至少两个数据节点;所述数据校验装置710包括接收模块711和处理模块712。接收模块711和处理模块712连接。与图6所示的数据校验装置600的不同之处在于,考虑到在实际应用中冗余节点700获取数据块的等待时间过长,数据块丢失的风险可能越大,图7所示的数据校验装置710实现等待时间超时,进行纠删码计算以提高目标数据存储可靠性的功能。下面详细介绍数据校验装置710中的每个模块的功能:
所述接收模块711,用于接收应用服务器110发送的多个数据块,将所述多个数据块保存为多个数据块副本,所述多个数据块存储于所述至少两个数据节点中。本实施方式中接收模块711接收应用服务器110发送的多个数据块的功能可以通过存储服务器中的接口311实现,接收模块711接收应用服务器110发送的多个数据块的功能,可以参考图4所示的步骤S410描述的应用服务器110发送多个数据块的具体细节,在这里不再赘述。以及,接收模块711将所述多个数据块保存为多个数据块副本的功能可以通过存储服务器中的处理器314调用存储器313里面的程序315实现,接收模块711接收应用服务器110发送的多个数据块的功能,可以参考图4所示的步骤S420描述的存储数据块的具体细节,在这不再赘述。
所述处理模块712,用于当所述多个数据块副本的数量未达到预设数值,且所述冗余节点700接收所述多个数据块的时间段的时长达到时长阈值时,对所述多个数据块副本进行纠删码计算以获得校验数据,所述时间段结束于所述冗余节点接收所述多个数据块的最后一个数据块。本实施方式中的处理模块712对所述数据块副本进行纠删码计算,以获得校验数据的功能,可以通过存储服务器中的处理器314调用存储器313里面的程序315实现,处理模块712对所述数据块副本进行纠删码计算的功能,可以参考图5所示的步骤S521描述的当所述多个数据块副本的数量未达到预设数值时,然而获取数据块的等待时间超时,对所述数据块副本进行纠删码计算以获得校验数据的具体细节,在这里不再赘述。
作为一种可选的实施方式,处理模块712,还用于在处理模块712获得所述校验数据之后删除所述数据块副本。本实施方式中的处理模块712删除所述数据块副本的功能,可以通过存储服务器中的处理器314调用存储器313里面的程序315实现,处理模块712删除所述数据块副本的功能,可以参考图4所示的实施例中的,步骤S460描述的在获得所述校验数据之后,删除所述数据块副本的具体细节,在这里不再赘述。
作为一种可选的实施方式,所述分布式存储***包括其他数据校验装置710,所述处理模块712,还用于将所述校验数据划分为多个校验块,还用于将本地存储的一个校验块之外的其他校验块发送给所述其他数据校验装置710。本实施方式中的处理模块712划分校验数据,以及发送校验块至其他数据校验装置710的功能,可以通过存储服务器中的处理器314调用存储器313里面的程序315实现,处理模块712划分校验数据,以及发送校验块至其他数据校验装置710的功能,可以参考图4所示的实施例中描述的当冗余节点为多个时,冗余节点在获得所述校验数据之后划分校验数据为多个校验块的具体细节,在这里不再赘述。
作为一种可选的实施方式,所述预设数值是根据所述分布式存储***的校验模式确定的。所述校验模式的实现细节可参照图4所示的实施例中描述的具体细节,在这里不再赘述。
请参见图8,图8为本发明实施例提供的一种冗余节点的结构图。如图8所示,本发明实施例提供的冗余节点800位于分布式存储***中,所述分布式存储***还包括至少两个数据节点。所述冗余节点800包括处理器810和接口820,所述接口820用于与应用服务器110通信。
所述处理器810用于通过所述接口820接收所述应用服务器110发送的多个数据块,将所述多个数据块保存为多个数据块副本,所述多个数据块存储于所述至少两个数据节点中。本实施方式中处理器810接收并保存应用服务器110发送的数据块的细节可参考图4所示的步骤S410和S420的描述,在这不再赘述。
所述处理器810还用于当所述多个数据块副本的数量达到预设数值时,对所述数据块副本进行纠删码计算以获得校验数据。处理器810对所述数据块副本进行纠删码计算的功能,可以参考图4所示的步骤S440描述的当所述多个数据块副本的数量达到预设数值时,对所述数据块副本进行纠删码计算以获得校验数据的具体细节,在这不再赘述。
作为一种可选的实施方式,所述处理器810还用于在获得所述校验数据之后删除所述数据块副本。所述处理器810获得所述校验数据之后删除所述数据块副本的细节可以参考图4所示的步骤S460的描述,在这不再赘述。
作为一种可选的实施方式,所述分布式存储***包括其他冗余节点,所述处理器810还用于将所述校验数据划分为多个校验块,以及将本地存储的一个校验块之外的其他校验块发送给所述其他冗余节点。所述处理器810划分校验数据,以及发送校验块至其他冗余节点的功能,可以参考图4所示的实施例中描述的获得所述校验数据之后划分校验数据为多个校验块,并发给其他冗余节点的具体细节,在这不再赘述。
作为一种可选的实施方式,所述处理器810还用于统计接收所述多个数据块的时间段的时长,所述时长未达到预设的时长阈值,所述时间段结束于所述数据校验装置610接收所述多个数据块的最后一个数据块。
作为一种可选的实施方式,所述预设数值是根据所述分布式存储***的校验模式确定的。所述校验模式的实现细节可参照图4所示的实施例中描述的具体细节,在这里不再赘述。
请参见图9,图9为本发明实施例提供的另一种冗余节点的结构图。如图9所示,本发明实施例提供的冗余节点900位于分布式存储***中,所述分布式存储***还包括至少两个数据节点。所述冗余节点900包括处理器910和接口920,所述接口920用于与应用服务器110通信。与图8所示的冗余节点800的不同之处在于,考虑到在实际应用中冗余节点获取数据块的等待时间过长,数据块丢失的风险可能越大,图9所示的冗余节点900实现等待时间超时,进行纠删码计算以提高目标数据存储可靠性的功能。
所述处理器910用于通过所述接口920接收所述应用服务器110发送的多个数据块,将所述多个数据块保存为多个数据块副本,所述多个数据块存储于所述至少两个数据节点中。本实施方式中处理器910接收并保存应用服务器110发送的数据块的细节可参考图4所示的步骤S410和S420的描述,在这不再赘述。
所述处理器910,还用于当所述多个数据块副本的数量未达到预设数值,且所述冗余节点900接收所述多个数据块的时间段的时长达到时长阈值时,对所述多个数据块副本进行纠删码计算以获得校验数据,所述时间段结束于所述冗余节点接收所述多个数据块的最后一个数据块。本实施方式中的处理器910对所述数据块副本进行纠删码计算的功能,可以参考图5所示的步骤S521描述的当所述多个数据块副本的数量未达到预设数值时,然而获取数据块的等待时间超时,对所述数据块副本进行纠删码计算以获得校验数据的具体细节,在这不再赘述。
作为一种可选的实施方式,处理器910,还用于在处理器910获得所述校验数据之后删除所述数据块副本。本实施方式中的处理器910删除所述数据块副本的功能,可以参考图4所示的实施例中的步骤S460描述的,在获得所述校验数据之后,删除所述数据块副本的具体细节,在这不再赘述。
作为一种可选的实施方式,所述分布式存储***包括其他冗余节点,处理器910,还用于将所述校验数据划分为多个校验块,还用于将本地存储的一个校验块之外的其他校验块发送给所述其他冗余节点。本实施方式中的处理器910划分校验数据,以及发送校验块至其他冗余节点的功能,可以参考图4所示的实施例中描述的当冗余节点为多个时,冗余节点在获得所述校验数据之后划分校验数据为多个校验块的具体细节,在这里不再赘述。
作为一种可选的实施方式,所述预设数值是根据所述分布式存储***的校验模式确定的。所述校验模式的实现细节可参照图4所示的实施例中描述的具体细节,在这里不再赘述。
请参见图10a,图10a为本发明实施例提供的一种数据校验***的结构图,如图10a所示,本发明实施例提供的数据校验***1000包括应用服务器1010、至少两个数据节点1020和冗余节点1030;应用服务器1010分别和至少两个数据节点1020,冗余节点1030连接,应用服务器1010、至少两个数据节点1020和冗余节点1030的功能如下分别描述:
所述应用服务器1010,用于发送多个数据块至所述至少两个数据节点1020,并且将所述多个数据块发送至所述冗余节点1030。
所述冗余节点1030,用于接收所述应用服务器1010发送的所述多个数据块,将所述多个数据块保存为多个数据块副本,当所述多个数据块副本的数量达到预设数值时,所述冗余节点1030还用于对所述数据块副本进行纠删码计算以获得校验数据。
所述至少两个数据节点1020中的每个数据节点1020,用于接收并存储所述应用服务器1010发送的所述多个数据块中的一个数据块,每个数据节点1020存储的数据块不相同。
作为一种可选的实施方式,所述冗余节点1030,还用于在获得所述校验数据之后删除所述数据块副本。
作为一种可选的实施方式,请参见图10b,图10b为本发明实施例提供的另一种数据校验***的结构图。如图10b所示,与图10a所示的数据校验***不同的是,所述数据校验***1000还包括其他冗余节点1040,冗余节点1040与冗余节点1030连接。图10b中只示出一个其他冗余节点1040,在其他校验模式下,还可以有多个其他冗余节点1040,分别与冗余节点1030连接。所述冗余节点1030,还用于将所述校验数据划分为多个校验块。所述冗余节点1030,还用于将除本地存储的一个校验块之外的其它校验块发送至所述其他冗余节点1040。
作为一种可选的实施方式,请参见图10c,图10c为本发明实施例提供的另一种数据校验***的结构图,如图10c所示,与图10c所示的数据校验***不同的是,如果要存储数据块为多个副本,则应用服务器1010将数据块发送给冗余节点1030存储为数据块副本的同时,还用于发送数据块给冗余节点1040存储为数据块副本。如果需要数据块的数据块副本的个数更多,则应用服务器1010同时发送多个相同的数据块至更多的冗余节点,每一个冗余节点分别存储一个相同数据块,以将应用服务器1010发送给数据节点1020的数据块存储为多个相同的数据块副本,多副本的存储提高了纠删码计算之前,目标数据的可靠性。
作为一种可选的实施方式,所述冗余节点1030,还用于统计接收所述多个数据块的时间段的时长,所述时长未达到预设的时长阈值,所述时间段结束于所述冗余节点800接收所述多个数据块的最后一个数据块。
作为一种可选的实施方式,所述预设数值是根据所述分布式存储***的校验模式确定的。
请参见图11a,图11a为本发明实施例提供的另一种数据校验***的结构图,如图11a所示,本发明实施例提供的数据校验***1100包括应用服务器1110、至少两个数据节点1120和至少一个冗余节点1130;应用服务器1110分别和至少两个数据节点1120,冗余节点1130连接。与图10a所示的数据校验***1000的不同之处在于,考虑到在实际应用中冗余节点获取数据块的等待时间过长,数据块丢失的风险可能越大,图11a所示的冗余节点1130实现等待时间超时,进行纠删码计算以提高目标数据存储可靠性的功能。应用服务器1110、至少两个数据节点1120和冗余节点1130的功能如下分别描述:
所述应用服务器1110,用于发送多个数据块至所述至少两个数据节点,还用于将所述多个数据块发送至所述冗余节点1130。
所述冗余节点1130,用于接收所述应用服务器1110发送的所述多个数据块,将所述多个数据块保存为多个数据块副本。当所述多个数据块副本的数量未达到预设数值,且所述冗余节点1130接收所述多个数据块的时间段的时长达到时长阈值时,所述冗余节点1130还用于对所述数据块副本进行纠删码计算以获得校验数据,所述时间段结束于所述冗余节点1130接收所述多个数据块的最后一个数据块。
所述至少两个数据节点1120中的每个数据节点1120,用于接收所述应用服务器1110发送的所述多个数据块中的一个数据块,每个数据节点1120存储的数据块不相同。
作为一种可选的实施方式,所述冗余节点800,还用于在获得所述校验数据之后删除所述数据块副本。
作为一种可选的实施方式,请参见图11b,图11b为本发明实施例提供的另一种数据校验***的结构图,如图11b所示,与图11a所示的数据校验***不同的是,所述数据校验***1000还包括其他冗余节点1140,冗余节点1140与冗余节点1130连接。图11b中只示出一个其他冗余节点1140,在其他校验模式下,还可以有多个其他冗余节点1140,分别与冗余节点1130连接。所述冗余节点1140,还用于将所述校验数据划分为多个校验块。所述冗余节点1130,还用于将除本地存储的一个校验块之外的其它校验块发送至所述其他冗余节点1140。
作为一种可选的实施方式,请参见图11c,图11c为本发明实施例提供的另一种数据校验***的结构图,如图11c所示,如果要存储数据块为多个副本,则应用服务器1110将数据块发送给冗余节点1130存储为数据块副本的同时,还用于发送数据块给冗余节点1140存储为数据块副本。如果需要数据块的数据块副本的个数更多,则应用服务器1110同时发送多个相同的数据块至更多的冗余节点,每一个冗余节点分别存储一个相同数据块,以将应用服务器1110发送给数据节点1120的数据块存储为多个相同的数据块副本,多副本的存储提高了在纠删码计算之前,目标数据存储的可靠性。
作为一种可选的实施方式,所述预设数值是根据所述分布式存储***的校验模式确定的。
本发明实施例提供的数据校验方法、装置及***,通过包含于冗余节点中的数据校验装置接收应用服务器发送的多个数据块,将所述多个数据块保存为多个数据块副本,不会直接计算其校验数据,以保证纠删码计算之前的所述目标数据的可靠性。当所述多个数据块副本的数量达到预设数值时,所述冗余节点对所述多个数据块副本进行纠删码计算以获得校验数据。避免了频繁进行纠删码计算,减轻了冗余节点的工作负荷。另外,冗余节点可以将其计算获得的校验数据存储在本地,不用再发送给其他存储节点,减少了存储节点之间的数据交互次数。
在本申请所提供的几个实施例中,应该理解到,所揭露的***,设备和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
上述以软件功能模块的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的保护范围。
Claims (26)
1.一种数据校验方法,其特征在于,所述方法应用于分布式存储***中,所述分布式存储***包括至少两个数据节点和至少一个冗余节点;所述方法包括:
所述冗余节点接收应用服务器发送的多个数据块,将所述多个数据块保存为多个数据块副本,所述多个数据块存储于所述至少两个数据节点中;
当所述多个数据块副本的数量达到预设数值时,所述冗余节点对所述数据块副本进行纠删码计算以获得校验数据。
2.如权利要求1所述的方法,其特征在于,还包括:
所述冗余节点在获得所述校验数据之后删除所述数据块副本。
3.如权利要求1或2所述的方法,其特征在于,所述至少两个数据节点中的每个数据节点存储所述多个数据块中的一个数据块,并且每个数据节点存储的数据块不相同。
4.如权利要求1-3任一所述的方法,其特征在于,所述分布式存储***还包括其他冗余节点,所述方法还包括:
所述冗余节点将所述校验数据划分为多个校验块;
所述冗余节点将除本地存储的一个校验块之外的其它校验块发送至所述其他冗余节点。
5.如权利要求1-4任一所述的方法,其特征在于,所述方法还包括:
所述冗余节点统计接收所述多个数据块的时间段的时长,所述时长未达到预设的时长阈值,所述时间段结束于所述冗余节点接收所述多个数据块中的最后一个数据块。
6.如权利要求1-5任一所述的方法,其特征在于,所述预设数值是根据所述分布式存储***的校验模式确定的。
7.一种数据校验方法,其特征在于,所述方法应用于分布式存储***中,所述分布式存储***包括至少两个数据节点和至少一个冗余节点,所述方法包括:
所述冗余节点接收应用服务器发送的多个数据块,将所述多个数据块保存为多个数据块副本,所述多个数据块存储于所述至少两个数据节点中;
当所述多个数据块副本的数量未达到预设数值,且所述冗余节点接收所述多个数据块的时间段的时长达到时长阈值时,所述冗余节点对所述数据块副本进行纠删码计算以获得校验数据,所述时间段结束于所述冗余节点接收所述多个数据块的最后一个数据块。
8.如权利要求7所述的方法,其特征在于,还包括:
所述冗余节点在获得所述校验数据之后删除所述数据块副本。
9.如权利要求7或8所述的方法,其特征在于,所述至少两个数据节点中的每个数据节点存储所述多个数据块中的一个数据块,并且每个数据节点存储的数据块不相同。
10.如权利要求7-9任一所述的方法,其特征在于,所述分布式存储***还包括其他冗余节点,所述方法还包括:
所述冗余节点将所述校验数据划分为多个校验块;
所述冗余节点将除本地存储的一个校验块之外的其它校验块发送至所述其他冗余节点。
11.如权利要求7-10任一所述的方法,其特征在于,所述预设数值是根据所述分布式存储***的校验模式确定的。
12.一种数据校验装置,其特征在于,位于分布式存储***的冗余节点中,所述分布式存储***还包括至少两个数据节点;所述数据校验装置包括:
接收模块,用于接收应用服务器发送的多个数据块,将所述多个数据块保存为多个数据块副本,所述多个数据块存储于所述至少两个数据节点中;
处理模块,用于当所述多个数据块副本的数量达到预设数值时,对所述数据块副本进行纠删码计算以获得校验数据。
13.如权利要求12所述的装置,其特征在于,所述处理模块,还用于在获得所述校验数据之后删除所述数据块副本。
14.如权利要求12或13所述的装置,其特征在于,所述分布式存储***还包括其他数据校验装置,所述处理模块,还用于将所述校验数据划分为多个校验块,还用于将本地存储的一个校验块之外的其他校验块发送给所述其他数据校验装置。
15.如权利要求12-14任一所述的装置,其特征在于,所述处理模块,还用于统计接收所述多个数据块的时间段的时长,所述时长未达到预设的时长阈值,所述时间段结束于所述数据校验装置接收所述多个数据块的最后一个数据块。
16.如权利要求12-15任一所述的装置,其特征在于,所述预设数值是根据所述分布式存储***的校验模式确定的。
17.一种冗余节点,其特征在于,所述冗余节点位于分布式存储***中,所述分布式存储***还包括至少两个数据节点;所述冗余节点包括处理器和接口;
所述接口用于与应用服务器通信;
所述处理器用于通过所述接口接收所述应用服务器发送的多个数据块,将所述多个数据块保存为多个数据块副本,所述多个数据块存储于所述至少两个数据节点中;
所述处理器还用于当所述多个数据块副本的数量达到预设数值时,对所述数据块副本进行纠删码计算以获得校验数据。
18.如权利要求17所述的冗余节点,其特征在于,所述处理器还用于在获得所述校验数据之后删除所述数据块副本。
19.如权利要求17或18所述的冗余节点,其特征在于,所述分布式存储***包括其他冗余节点,所述处理器还用于将所述校验数据划分为多个校验块,以及将本地存储的一个校验块之外的其他校验块发送给所述其他冗余节点。
20.如权利要求17-19任一所述的冗余节点,其特征在于,所述处理器还用于统计接收所述多个数据块的时间段的时长,所述时长未达到预设的时长阈值,所述时间段结束于所述数据校验装置接收所述多个数据块的最后一个数据块。
21.如权利要求17-20任一所述的冗余节点,其特征在于,所述预设数值是根据所述分布式存储***的校验模式确定的。
22.一种数据校验***,包括应用服务器、至少两个数据节点和至少一个冗余节点;
所述应用服务器,用于发送多个数据块至所述至少两个数据节点,并且将所述多个数据块发送至所述冗余节点;
所述冗余节点,用于接收所述应用服务器发送的所述多个数据块,将所述多个数据块保存为多个数据块副本,当所述多个数据块副本的数量达到预设数值时,所述冗余节点还用于对所述数据块副本进行纠删码计算以获得校验数据;
所述至少两个数据节点中的每个数据节点,用于接收并存储所述应用服务器发送的所述多个数据块中的一个数据块,每个数据节点存储的数据块不相同。
23.如权利要求22所述的***,其特征在于,
所述冗余节点,还用于在获得所述校验数据之后删除所述数据块副本。
24.如权利要求22-23任一所述的***,其特征在于,还包括其他冗余节点,所述冗余节点,还用于将所述校验数据划分为多个校验块;
所述冗余节点,还用于将除本地存储的一个校验块之外的其它校验块发送至所述其他冗余节点。
25.如权利要求22-24任一所述的***,其特征在于,
所述冗余节点,还用于统计接收所述多个数据块的时间段的时长,所述时长未达到预设的时长阈值,所述时间段结束于所述冗余节点接收所述多个数据块的最后一个数据块。
26.如权利要求22-25任一所述的***,其特征在于,所述预设数值是根据所述分布式存储***的校验模式确定的。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611249863.8A CN106776146A (zh) | 2016-12-29 | 2016-12-29 | 一种数据校验方法、装置及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611249863.8A CN106776146A (zh) | 2016-12-29 | 2016-12-29 | 一种数据校验方法、装置及*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106776146A true CN106776146A (zh) | 2017-05-31 |
Family
ID=58929392
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611249863.8A Pending CN106776146A (zh) | 2016-12-29 | 2016-12-29 | 一种数据校验方法、装置及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106776146A (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107509085A (zh) * | 2017-08-24 | 2017-12-22 | 山东浪潮商用***有限公司 | 一种流媒体文件的存储方法及装置 |
CN107707395A (zh) * | 2017-09-28 | 2018-02-16 | 浙江大华技术股份有限公司 | 一种数据传输方法、装置和*** |
CN108052419A (zh) * | 2018-01-05 | 2018-05-18 | 哈尔滨学院 | 一种数据容灾的方法 |
CN109889418A (zh) * | 2018-12-29 | 2019-06-14 | 百度在线网络技术(北京)有限公司 | 基于can总线的数据传输方法和装置 |
CN110196682A (zh) * | 2018-06-15 | 2019-09-03 | 腾讯科技(深圳)有限公司 | 数据管理方法、装置、计算设备及存储介质 |
CN110262922A (zh) * | 2019-05-15 | 2019-09-20 | 中国科学院计算技术研究所 | 基于副本数据日志的纠删码更新方法及*** |
CN110990189A (zh) * | 2019-11-29 | 2020-04-10 | 北京金山云网络技术有限公司 | 数据存储方法、装置、电子设备及计算机可读存储介质 |
CN113536356A (zh) * | 2021-07-30 | 2021-10-22 | 海宁奕斯伟集成电路设计有限公司 | 数据验证方法和分布式存储*** |
CN116501262A (zh) * | 2023-06-19 | 2023-07-28 | 新华三信息技术有限公司 | 一种数据存储方法、装置、电子设备及存储介质 |
CN117289876A (zh) * | 2023-11-22 | 2023-12-26 | 苏州元脑智能科技有限公司 | 一种数据写入方法、***、装置、介质及四级单元闪存 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103699494A (zh) * | 2013-12-06 | 2014-04-02 | 北京奇虎科技有限公司 | 一种数据存储方法、数据存储设备和分布式存储*** |
CN103942116A (zh) * | 2014-04-24 | 2014-07-23 | 深圳市中博科创信息技术有限公司 | 一种对数据进行容错处理的方法及数据处理*** |
CN105635252A (zh) * | 2015-12-23 | 2016-06-01 | 浪潮集团有限公司 | 一种Hadoop分布式文件***HDFS纠删码冗余备份策略 |
CN106161523A (zh) * | 2015-04-02 | 2016-11-23 | 腾讯科技(深圳)有限公司 | 一种数据处理方法和设备 |
EP3101530A1 (en) * | 2015-06-04 | 2016-12-07 | Huawei Technologies Co., Ltd. | Data distribution method, data storage method, related apparatus, and system |
-
2016
- 2016-12-29 CN CN201611249863.8A patent/CN106776146A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103699494A (zh) * | 2013-12-06 | 2014-04-02 | 北京奇虎科技有限公司 | 一种数据存储方法、数据存储设备和分布式存储*** |
CN103942116A (zh) * | 2014-04-24 | 2014-07-23 | 深圳市中博科创信息技术有限公司 | 一种对数据进行容错处理的方法及数据处理*** |
CN106161523A (zh) * | 2015-04-02 | 2016-11-23 | 腾讯科技(深圳)有限公司 | 一种数据处理方法和设备 |
EP3101530A1 (en) * | 2015-06-04 | 2016-12-07 | Huawei Technologies Co., Ltd. | Data distribution method, data storage method, related apparatus, and system |
CN105635252A (zh) * | 2015-12-23 | 2016-06-01 | 浪潮集团有限公司 | 一种Hadoop分布式文件***HDFS纠删码冗余备份策略 |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107509085B (zh) * | 2017-08-24 | 2019-12-24 | 山东浪潮商用***有限公司 | 一种流媒体文件的存储方法及装置 |
CN107509085A (zh) * | 2017-08-24 | 2017-12-22 | 山东浪潮商用***有限公司 | 一种流媒体文件的存储方法及装置 |
CN107707395A (zh) * | 2017-09-28 | 2018-02-16 | 浙江大华技术股份有限公司 | 一种数据传输方法、装置和*** |
CN108052419A (zh) * | 2018-01-05 | 2018-05-18 | 哈尔滨学院 | 一种数据容灾的方法 |
CN110196682A (zh) * | 2018-06-15 | 2019-09-03 | 腾讯科技(深圳)有限公司 | 数据管理方法、装置、计算设备及存储介质 |
CN109889418A (zh) * | 2018-12-29 | 2019-06-14 | 百度在线网络技术(北京)有限公司 | 基于can总线的数据传输方法和装置 |
CN109889418B (zh) * | 2018-12-29 | 2020-12-08 | 百度在线网络技术(北京)有限公司 | 基于can总线的数据传输方法和装置 |
CN110262922A (zh) * | 2019-05-15 | 2019-09-20 | 中国科学院计算技术研究所 | 基于副本数据日志的纠删码更新方法及*** |
CN110990189A (zh) * | 2019-11-29 | 2020-04-10 | 北京金山云网络技术有限公司 | 数据存储方法、装置、电子设备及计算机可读存储介质 |
CN113536356A (zh) * | 2021-07-30 | 2021-10-22 | 海宁奕斯伟集成电路设计有限公司 | 数据验证方法和分布式存储*** |
CN116501262A (zh) * | 2023-06-19 | 2023-07-28 | 新华三信息技术有限公司 | 一种数据存储方法、装置、电子设备及存储介质 |
CN116501262B (zh) * | 2023-06-19 | 2023-09-19 | 新华三信息技术有限公司 | 一种数据存储方法、装置、电子设备及存储介质 |
CN117289876A (zh) * | 2023-11-22 | 2023-12-26 | 苏州元脑智能科技有限公司 | 一种数据写入方法、***、装置、介质及四级单元闪存 |
CN117289876B (zh) * | 2023-11-22 | 2024-02-23 | 苏州元脑智能科技有限公司 | 一种数据写入方法、***、装置、介质及四级单元闪存 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106776146A (zh) | 一种数据校验方法、装置及*** | |
CN102546782B (zh) | 一种分布式***及其数据操作方法 | |
US9805140B2 (en) | Striping of directed graphs and nodes with improved functionality | |
CN106572153A (zh) | 集群的数据存储方法及装置 | |
CN108696569A (zh) | 在NVMe-oF以太网SSD中提供数据复制的***和方法 | |
CN104063293B (zh) | 一种数据备份方法及流计算*** | |
CN105468302B (zh) | 一种处理数据的方法、装置及*** | |
CN103440204B (zh) | 一种更新文件***的方法和存储设备 | |
CN110708369B (zh) | 设备节点的文件部署方法、装置、调度服务器及存储介质 | |
CN109445687A (zh) | 一种数据存储方法以及协议服务器 | |
CN107729536A (zh) | 一种数据存储方法和装置 | |
CN110321225A (zh) | 负载均衡方法、元数据服务器及计算机可读存储介质 | |
CN105653209A (zh) | 一种对象存储数据传输方法及装置 | |
CN109597903A (zh) | 图像文件处理装置和方法、文件存储***及存储介质 | |
CN110209341A (zh) | 一种数据写入方法、装置和存储设备 | |
CN104715044A (zh) | 一种分布式***及其数据操作方法 | |
CN106201772A (zh) | 一种基于数据中心的操作***备份、恢复方法及装置 | |
CN106354435B (zh) | Raid初始化的方法及装置 | |
CN108780447A (zh) | 差异数据备份的方法和设备 | |
Rust et al. | Resilient distributed constraint optimization in physical multi-agent systems | |
CN113347238A (zh) | 基于区块链的消息分区方法及***、设备、存储介质 | |
EP2797260A2 (en) | Risk mitigation in data center networks | |
CN106713041A (zh) | 会话日志的发送方法及装置 | |
CN109587185A (zh) | 云存储***和云存储***中的对象处理方法 | |
CN109992575B (zh) | 大数据的分布式存储*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170531 |
|
RJ01 | Rejection of invention patent application after publication |