一种验证方法及装置、计算机装置、可读存储介质与流程

文档序号:14037425阅读:133来源:国知局
一种验证方法及装置、计算机装置、可读存储介质与流程

本发明涉及数据处理领域,尤其涉及一种验证方法及装置、计算机装置、可读存储介质。



背景技术:

保持数据完整性是现代存储系统的重中之重。目前,有各种各样的技术被开发和应用来改进数据完整性的保护,其中最常用、最受欢迎的就是校验和方法。

传统的针对存储系统的校验和方法一般分为两类:一类是端到端校验,另一类是磁盘校验和。其中,针对端到端校验,一般是在应用程序将数据传给后端系统接口开始并使用校验和保护,之后一直到数据被读取时才使用校验和进行验证,但这样的话存在错误发现慢的缺陷,且如果数据不返回时,就没法进行校验和验证。而磁盘校验和,在磁盘写入数据时可以与计算的校验和一起存储,之后在数据被读取时也可以使用校验和来进行验证。但无论端到端校验还是磁盘校验和都没有对类似于glusterfs(一种分布式文件系统)的堆叠式文件系统的各模块间进行校验和验证,以实现数据完整性的保护。



技术实现要素:

本发明实施例提供了一种验证方法及装置、计算机装置、可读存储介质,用于在基于堆叠式模块设计的分布式文件系统中及时发现错误,防止错误扩散,提供更可靠的保护,帮助定位问题,从而有助于设计更可靠的基于堆叠式模块设计的分布式文件系统,更好地实现数据完整性保护。

有鉴于此,本发明第一方面提供一种验证方法,应用于基于堆叠式模块设计的分布式文件系统,分布式文件系统包括n个模块,n为不小于2的正整数,可包括:

当模块m接收到第一数据时,检测预设内存区域是否存储有第一数据对应的第一校验和,m为不大于n的正整数;

若是,则利用第一数据生成第二校验和,并将第二校验和与第一校验和进行对比;

若第二校验和与第一校验和不相同,则确定第一数据在模块m出现错误。

进一步的,在检测预设内存区域是否存储有第一校验和之前,方法还包括:

检测模块m的预设校验开关是否开启;

若是,则触发检测预设内存区域是否存储有第一校验和的步骤。

进一步的,方法还包括:

确定分布式文件系统的负载;

根据负载的高低开启w个模块对应的预设校验开关,w为不大于n的正整数。

进一步的,根据负载的高低开启w个模块对应的预设校验开关包括:

将n个模块的重要性按照由高到低的原则排序;

根据负载的高低,开启n个模块中排序靠前的w个模块对应的预设校验开关。

进一步的,当m为1时,预设校验开关为开启状态;

当m为n时,预设校验开关为开启状态。

进一步的,方法还包括:

若预设内存区域未存储第一校验和,或模块m的预设校验开关未开启,或第二校验和与第一校验和相同,则将第一数据发送至模块m+k,k为-1或1。

进一步的,方法还包括:

当预设内存区域未存储第一校验和时,在预设存储区域存储第二校验和,或存储第二校验和与预设魔数、第一数据的第一数据长度、第一数据的预设位置的第一采样数据中的至少一种,并将第二校验和作为第一校验和。

进一步的,当预设存储区域存储有第一校验和与第一校验和对应的第二数据的第二数据长度时,在利用第一数据生成第二校验和之前,方法还包括:

检测第二数据长度是否发生变化;

若否,则触发利用第一数据生成第二校验和的步骤。

进一步的,当预设存储区域还存储有检测预设魔数时,在检测第二数据长度是否发生变化之前,方法还包括:

检测预设魔数是否发生变化;

若否,则触发检测第二数据长度是否发生变化的步骤。

进一步的,当预设存储区域还存储有第二数据的预设位置的第二采样数据时,若第二校验和与第一校验和相同,则将第一数据发送至模块m+k包括:

若第二校验和与第一校验和相同,则将第二采样数据与第一采样数据进行对比;

若第二采样数据与第一采样数据相同,则将第一数据发送至模块m+k。

本发明第二方面提供一种验证装置,应用于基于堆叠式模块设计的分布式文件系统,分布式文件系统包括n个模块,n为不小于2的正整数,可包括:

第一检测单元,用于当模块m接收到第一数据时,检测预设内存区域是否存储有第一数据对应的第一校验和,m为不大于n的正整数;

生成单元,用于当预设内存区域存储有第一校验和时,则利用第一数据生成第二校验和;

对比单元,用于将第二校验和与第一校验和进行对比;

第一确定单元,用于当第二校验和与第一校验和不相同时,则确定第一数据在模块m出现错误。

进一步的,装置还包括:

第二检测单元,用于检测模块m的预设校验开关是否开启;

第一触发单元,用于当模块m的预设校验开关开启时,则触发第一检测单元检测预设内存区域是否存储有第一校验和。

进一步的,装置还包括:

第二确定单元,用于确定分布式文件系统的负载;

开启单元,用于根据负载的高低开启w个模块对应的预设校验开关,w为不大于n的正整数。

进一步的,开启单元,具体用于:

将n个模块的重要性按照由高到低的原则排序;

根据负载的高低,开启n个模块中排序靠前的w个模块对应的预设校验开关。

进一步的,当m为1时,预设校验开关为开启状态;

当m为n时,预设校验开关为开启状态。

进一步的,装置还包括:

发送单元,用于当预设内存区域未存储第一校验和,或模块m的预设校验开关未开启,或第二校验和与第一校验和相同时,则将第一数据发送至模块m+k,k为-1或1。

进一步的,装置还包括:

存储单元,用于当预设内存区域未存储第一校验和时,在预设存储区域存储第二校验和,或存储第二校验和与预设魔数、第一数据的第一数据长度、第一数据的预设位置的第一采样数据中的至少一种,并将第二校验和作为第一校验和。

进一步的,当预设存储区域存储有第一校验和与第一校验和对应的第二数据的第二数据长度时,装置还包括:

第三检测单元,用于检测第二数据长度是否发生变化;

第二触发单元,用于当第二数据长度未发生变化时,则触发生成单元利用第一数据生成第二校验和。

进一步的,当预设存储区域还存储有检测预设魔数时,装置还包括:

第四检测单元,用于检测预设魔数是否发生变化;

第三触发单元,用于当预设魔数未发生变化时,则触发第三检测单元检测第二数据长度是否发生变化。

进一步的,当预设存储区域还存储有第二数据的预设位置的第二采样数据时,发送单元,具体用于:

若第二校验和与第一校验和相同,则将第二采样数据与第一采样数据进行对比;

若第二采样数据与第一采样数据相同,则将第一数据发送至模块m+k。

本发明第三方面提供一种计算机装置,应用于基于堆叠式模块设计的分布式文件系统,分布式文件系统包括n个模块,n为不小于2的正整数,计算机装置包括处理器,处理器用于执行存储器中存储的计算机程序时,实现如下步骤:

当模块m接收到第一数据时,检测预设内存区域是否存储有第一数据对应的第一校验和,m为不大于n的正整数;

若是,则利用第一数据生成第二校验和,并将第二校验和与第一校验和进行对比;

若第二校验和与第一校验和不相同,则确定第一数据在模块m出现错误。

本发明第四方面提供一种计算机可读存储介质,应用于基于堆叠式模块设计的分布式文件系统,分布式文件系统包括n个模块,n为不小于2的正整数,可读存储介质上存储有计算机程序,计算机程序被处理器执行时,实现如下步骤:

当模块m接收到第一数据时,检测预设内存区域是否存储有第一数据对应的第一校验和,m为不大于n的正整数;

若是,则利用第一数据生成第二校验和,并将第二校验和与第一校验和进行对比;

若第二校验和与第一校验和不相同,则确定第一数据在模块m出现错误。

从以上技术方案可以看出,本发明实施例具有以下优点:

本发明实施例提供了一种验证方法,当基于堆叠式模块设计的分布式文件系统中的模块m接收到第一数据时,可以先行检测预设内存区域是否存储有第一数据对应的第一校验和,在第一校验和存储的情况下,可以利用模块m接收到的第一数据生成第二校验和,并可以将第二校验和与第一校验和进行对比,以对模块m接收的第一数据进行验证,若第二校验和与第二校验和不相同,则可以确定第一数据在模块m出现错误,那么可以立马定位第一数据的出错位置,且可以及时阻断第一数据的上传或下发,防止错误的第一数据的扩散,提供更可靠的保护,从而有助于设计更可靠的基于堆叠式模块设计的分布式文件系统,更好地实现数据完整性保护。

附图说明

图1为本发明实施例中验证方法一个实施例示意图;

图2为本发明实施例中验证方法另一实施例示意图;

图3为本发明实施例中验证方法另一实施例示意图;

图4为本发明实施例中验证方法另一实施例示意图;

图5为本发明实施例中验证方法另一实施例示意图;

图6为本发明实施例中验证装置一个实施例示意图;

图7为本发明实施例中验证装置另一实施例示意图;

图8为本发明实施例中验证装置另一实施例示意图;

图9为本发明实施例中验证装置另一实施例示意图;

图10为本发明实施例中验证装置另一实施例示意图;

图11为本发明实施例中验证装置另一实施例示意图;

图12为本发明实施例中验证装置另一实施例示意图。

具体实施方式

本发明实施例提供了一种验证方法及装置、计算机装置、可读存储介质,用于在基于堆叠式模块设计的分布式文件系统中及时发现错误,防止错误扩散,提供更可靠的保护,帮助定位问题,从而有助于设计更可靠的基于堆叠式模块设计的分布式文件系统,更好地实现数据完整性保护。

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

为便于理解,下面对本发明实施例中的具体流程进行描述,请参阅图1,本发明实施例中验证方法一个实施例包括:

101、当模块m接收到第一数据时,检测预设内存区域是否存储有第一数据对应的第一校验和;

本实施例中,基于堆叠式模块设计的分布式文件系统可以包括n个模块,通过该分布式文件系统可以将第一数据写入磁盘中,也可以将第一数据从磁盘/固态盘中读取后返回。在第一数据的写入或读取过程中,第一数据可以分布式文件系统中的一个模块上传或下发至另一个模块。其中,n为不小于2的正整数。

在第一数据的写入或读取过程中,当该分布式文件系统中的模块m接收到第一数据时,可以先行检测预设内存区域是否存储有第一数据对应的第一校验和。

其中,第一校验和为利用通过验证的第一数据或初次进入分布式文件系统的第一数据生成,并存储于预设内存区域中,如缓存,以用于检验第一数据在分布式文件系统中模块的传输过程中是否出现错误,具体生成方式如下:

第一种:

当接收到针对第一数据的写入请求时,且在第一数据从上层应用程序开始进入堆叠式文件系统的模块k时,第一校验和即可以利用该第一数据生成,并存储于预设内存区域中,以用于第一数据在发送至分布式文件系统中其它模块时的验证。

第二种:

当接收到针对第一数据的读取请求时,且在第一数据从磁盘/固态盘开始回调至堆叠式文件系统的模块k时,第一校验和即可以利用该第一数据生成,并存储于与预设内存区域中,以用于第一数据在发送至分布式文件系统中其它模块时的验证。

第三种:

在接收到针对第一数据的写入请求或读取请求时,当第一数据从分布式文件系统中的一个模块a发送至另一个模块b时,若第一数据在模块a通过验证,即默认第一数据正确,则可以利用模块a接收到的第一数据生成的第二校验和作为第一校验和,并可以将该作为第一校验和的第二校验和存储于预设内存区域,以用于第一数据在发送至模块b时,可以对模块b接收到的第一数据进行验证。

可以理解的是,在此种方式中,预设存储区域可以存在多个第一校验和,即每一个模块接收到的第一数据通过验证后,均可以生成相应的第一校验和进行存储,也可以只存在一个第一校验和,但第一校验和由利用下一个模块接收的且通过验证的第一数据生成的校验和更新,此处不做具体限定。

需要说明的是,当预设存储区域存在多个第一校验和时,这多个第一校验和可以与对应的模块之间建立映射关系并加以区分,以利于正确使用相应的第一校验和。

本实施例中,n为不小于2的正整数,m、k、a、b为不大于n的正整数。

102、若预设内存区域存储有第一校验和,则利用第一数据生成第二校验和,并将第二校验和与第一校验和进行对比;

本实施例中,若预设存储区域存储有第一校验和,则可以利用第一数据生成第二校验和,并可以将第二校验和与第一校验和进行对比,以判断第二校验和是否与第一校验和相同。

本实施例中,利用第一数据生成第二校验和的方法可以参照现有技术,此处不再赘述。

103、若第二校验和与第一校验和不相同,则确定第一数据在模块m出现错误;

本实施例中,若第二校验和与第一校验和不相同,则可以确定第一数据在模块m出现错误。

进一步的,在确定第一数据在模块m出现错误后,可以定位模块m,及时阻断第一数据发送至回调至上一个模块或下发至下一个模块,还可以进行第一数据的报错,以使得工作人员可以分析第一数据在模块m的出错原因。

104、若预设内存区域未存储第一校验和,或若第二校验和与第一校验和相同,则将第一数据发送至模块m+k。

本实施例中,若预设内存区域未存储第一校验和,则可以将第一数据发送至模块m+k。其中,k可以为-1或1。

具体的,当接收到的是第一数据的写入请求,k可以为1,即第一数据在模块m通过验证后,第一数据可以从模块m发送至模块m的下一个模块;而当接收到的是第一数据的读取请求,k可以为-1,即第一数据在模块m通过验证后,第一数据可以从模块m发送至模块m的上一个模块。

可以理解的是,本实施例中,若第二校验和与第一校验和相同,则可以确定第一数据在模块m未出现错误,那么也可以从模块m将第一数据发送至模块m+k。

进一步的,在预设存储区域未存储第一校验和或确定第一数据在模块m未出现错误后,可以根据需要利用模块m接收到的第一数据生成的第二校验和存储于预设内存区域中,该第二校验和可以更新第一校验和,也可以不进行更新,此处不做具体限定。

需要说明的是,本实施例中,分布式文件系统的第一个模块可以为模块1,也可以为模块n,模块1至模块n只是代表n个模块的一种排序方式,此处不做具体限定。

本实施例中,当基于堆叠式模块设计的分布式文件系统中的模块m接收到第一数据时,可以先行检测预设内存区域是否存储有第一数据对应的第一校验和,在第一校验和存储的情况下,可以利用模块m接收到的第一数据生成第二校验和,并可以将第二校验和与第一校验和进行对比,以对模块m接收的第一数据进行验证,若第二校验和与第二校验和不相同,则可以确定第一数据在模块m出现错误,那么可以立马定位第一数据的出错位置,且可以及时阻断第一数据的上传或下发,防止错误的第一数据的扩散,提供更可靠的保护,从而有助于设计更可靠的基于堆叠式模块设计的分布式文件系统,更好地实现数据完整性保护。

请参阅图2,本发明实施例中验证方法另一实施例包括:

201、当模块m接收到第一数据时,检测模块m的预设校验开关是否开启;

本实施例中,基于堆叠式模块设计的分布式文件系统的各个模块可以分别设有预设校验开关,该预设校验开关可以进行动态关闭或开启。在模块m的预设校验开关开启时,意味着可以对模块m接收的第一数据进行校验,反之,则意味着需要将第一数据直接回调至上一个模块或下发至下一个模块。由此,当模块m接收到第一数据时,可以先检测模块m的预设校验开关是否开启。

其中,预设校验开关包括写校验开关或读校验开关,当接收到针对第一数据的写入请求时,该预设校验开关可以为写校验开关,而当接收到针对第一数据的读取请求时,该预设校验开关可以为读校验开关。

在实际应用中,当基于堆叠式模块设计的分布式文件系统的n个模块中,可以根据需要开启其中的w个模块的预设校验开关,具体方式如下:

确定分布式文件系统的负载;

根据负载的高低开启w个模块对应的预设校验开关,w为不大于n的正整数。

具体的,上述分布式文件系统的负载可以分为三个等级,假设设有负载阈值t1、t2,那么当负载高于t1时,可以确定为高负载,当负载位于t1、t2的范围内时,可以确定为中负载,当负载低于t2时,可以确定为低负载。根据负载的不同等级,可以开启不同数量的模块的预设校验开关,负载越高,关闭预设校验开关的模块的数量越多。可以理解的是,本实施例中关于分布式文件系统的负载等级的分类还可以采用其它方式,本实施例仅为举例说明。

由此,在第一数据的写入或读取过程中,确定上述分布式文件系统的负载后,可以确定此时分布式文件系统的负载等级,从而确定开启预设校验开关的模块的数量。

进一步的,本实施例中,当需要对w个模块对应的预设校验开关进行开启时,可以在分布式文件系统的n个模块中对w个模块进行选择,选择方式如下:

将n个模块的重要性按照由高到低的原则排序;

根据负载的高低,开启n个模块中排序靠前的w个模块对应的预设校验开关。

具体的,在分布式文件系统的n个模块中,可以先确定n个模块的重要性,并可以将n个模块的重要性按照由高到低的原则排序,而后可以根据分布式文件系统的负载的高低,在n个模块中选择排序靠前的w个模块,并开启这w个模块对应的预设校验开关。通过此种方式,可以有效减少模块间相应校验和计算和验证的开销,从而可以在分布式文件系统的负载较高时,可以减少高负载对系统性能的影响。

本实施例中,可选的,当m为1时,预设校验开关可以为开启状态,当m为n时,预设校验开关也可以为开启状态,即分布式文件系统的n个模块中,第一个模块与最后一个模块对应的预设校验开关均开启,以提高对第一数据在读写路径上出现错误的检测能力。

202、若模块m的预设校验开关开启,则检测预设内存区域是否存储有第一校验和;

203、若预设内存区域存储有第一校验和,则利用第一数据生成第二校验和,并将第二校验和与第一校验和进行对比;

204、若第二校验和与第一校验和不相同,则确定第一数据在模块m出现错误;

本实施例中的步骤202至步骤204与图1所示实施例中步骤101至步骤103描述的相关内容相同,此处不再赘述。

205、若模块m的预设校验开关未开启,或预设内存区域未存储第一校验和,或若第二校验和与第一校验和相同,则将第一数据发送至模块m+k。

本实施例中,若模块m的预设校验开关未开启,则可以将第一数据发送至模块m+k。

本实施例中步骤205的其它相关内容可以参考图1所示实施例中步骤104中说明的内容,此处不再赘述。

基于图2所示实施例,下面对第一数据利用基于堆叠式模块设计的分布式文件系统的写入与读取过程进行举例说明:

在第一数据的写入请求从上次应用程序进入分布式文件系统的第一个模块(第一个模块的写校验开关开启)时,可以利用第一数据生成第一校验和并存储于预设内存区域中,而后可以将第一数据从第一个模块下发到第二个模块,若第二个模块的写校验开关关闭,则可以直接将第一数据下发到第三个模块,若第二个模块的写校验开关开启,则可以利用第二个模块接收的第一数据生成第二校验和,并与预设内存区域的第一校验和进行对比,若第一校验和与第二校验和不相同,则可以确定第一数据在第二个模块出现错误,若第一校验和与第二校验和相同,则可以继续将第一数据下发到第三个模块,就这样一个一个模块往下走,直到把第一数据写入磁盘/固态盘中。

同时,对于针对第一数据的读取请求,当从磁盘/固态盘读取第一数据进入分布式文件系统的最底层模块(最底层模块的读校验开关开启)时,可以利用读取的第一数据生成第一校验和,并存储于预设内存区域中,而后可以将第一数据从最底层模块回调至倒数第二个模块,若倒数第二个模块的读校验开关关闭,则可以直接将第一数据回调至倒数第三个模块,若倒数第二个模块的读校验开关开启,则可以利用倒数第二个模块接收的第一数据生成第二校验和,并与预设内存区域的第一校验和进行对比,若第一校验和与第二校验和不相同,则可以确定第一数据在倒数第二个模块出现错误,若第一校验和与第二校验和相同,则可以继续将第一数据回调至倒数第三个模块,就这样一个一个模块往上走,直到把第一数据返回给用户。

请参阅图3,本发明实施例中验证方法另一实施例包括:

301、当模块m接收到第一数据时,检测模块m的预设校验开关是否开启;

302、若模块m的预设校验开关开启,则检测预设内存区域是否存储有第一校验和;

本实施中的步骤301至步骤302与图2所示实施例中的步骤201至步骤202相同,此处不再赘述。

303、若预设内存区域存储有第一校验和,且存储有第一校验和对应的第二数据的第二数据长度,检测第二数据长度是否发生变化;

本实施例中,若预设内存区域存储有第一校验和,且存储有第一校验和对应的第二数据的第二数据长度,则可以预先检测第二数据长度是否发生变化。

具体的,由于第一校验和为利用通过验证的第一数据或初次进入分布式文件系统的第一数据生成,那么可知第二数据即为通过验证的第一数据或初次进入分布式文件系统的第一数据,则通过检测第二数据的第二数据长度是否发生变化,可以检测第一数据在相应的写入或读取过程中是否出现错误。

304、若第二数据长度未发生变化,则利用第一数据生成第二校验和,并将第二校验和与第一校验和进行对比;

本实施例中,若第二数据长度未发生变化,则可以初步认为第一数据未出现错误,并可以利用第一校验和与利用第一数据生成的第二校验和进行对比,以进一步对第一数据进行是否出现错误的验证。

可以理解的是,本实施例中,若第二数据长度发生变化,那么可以确定预设内存区域中的第一校验和已经出错,则可以不利用第一校验和对第一数据验证,以降低系统计算负载。

进一步的,本实施例中,确定第二数据的第二数据长度发生变化后,可以进行第二数据长度的报错,以使得工作人员可以分析第二数据长度的出错原因。

305、若第二校验和与第一校验和不相同,则确定第一数据在模块m出现错误;

306、若模块m的预设校验开关未开启,或预设内存区域未存储第一校验和,或若第二校验和与第一校验和相同,则将第一数据发送至模块m+k。

本实施例中的步骤304至步骤306与图2所示实施例中的步骤203至步骤205相同,此处不再赘述。

进一步的,在预设存储区域未存储第一校验和或确定第一数据在模块m未出现错误后,还可以将第一数据的第一数据长度存储于预设内存区域中,该第一数据长度可以更新第二数据长度,也可以不进行更新,此处不做具体限定。

请参阅图4,本发明实施例中验证方法另一实施例包括:

401、当模块m接收到第一数据时,检测模块m的预设校验开关是否开启;

402、若模块m的预设校验开关开启,则检测预设内存区域是否存储有第一校验和;

本实施中的步骤401至步骤402与图3所示实施例中的步骤301至步骤302相同,此处不再赘述。

403、若预设内存区域存储有第一校验和,且存储有检测预设魔数,检测预设魔数是否发生变化;

本实施例中,若预设内存区域存储有第一校验和,且存储有预设魔数,则可以预先检测第二数据长度是否发生变化。

具体的,由于魔数是固定的,则在本实施例中,一旦预设内存区域的预设魔数发生变化,则可以默认为第一校验和与第二数据的第二数据长度发生了变化,反之,则可以认为第一校验和与第二数据的第二数据长度未出错。

404、若预设魔数未发生变化,且存储有第一校验和对应的第二数据的第二数据长度,则检测第二数据长度是否发生变化;

可以理解的是,本实施例中,若预设魔数发生变化,那么可以确定与第二数据的第二数据长度已经出错,则可以不对第二数据的第二数据长度进行检测,以降低系统计算负载。

405、若第二数据长度未发生变化,则利用第一数据生成第二校验和,并将第二校验和与第一校验和进行对比;

406、若第二校验和与第一校验和不相同,则确定第一数据在模块m出现错误;

407、若模块m的预设校验开关未开启,或预设内存区域未存储第一校验和,或第二校验和与第一校验和相同,则将第一数据发送至模块m+k。

本实施例中的步骤404至步骤407与图3所示实施例中的步骤303至步骤306相同,此处不再赘述。

上述图3所示实施例和图4所示实施例能够在第一校验和使用前,先对第一校验和是否出错进行检验,以避免第一校验和出错但第一数据正确的误判场景,进而可以有效地减少误判率,提高系统可靠性。

请参阅图5,本发明实施例中验证方法另一实施例包括:

501、当模块m接收到第一数据时,检测模块m的预设校验开关是否开启;

502、若模块m的预设校验开关开启,则检测预设内存区域是否存储有第一校验和;

503、若预设内存区域存储有第一校验和,且存储有检测预设魔数,检测预设魔数是否发生变化;

504、若预设魔数未发生变化,且存储有第一校验和对应的第二数据的第二数据长度,则检测第二数据长度是否发生变化;

505、若第二数据长度未发生变化,则利用第一数据生成第二校验和,并将第二校验和与第一校验和进行对比;

506、若第二校验和与第一校验和不相同,则确定第一数据在模块m出现错误;

本实施中的步骤501至步骤506与图4所示实施例中的步骤401至步骤406相同,此处不再赘述。

507、若第二校验和与第一校验和相同,且存储有第二数据的预设位置的第二采样数据,则将第二采样数据与第一采样数据进行对比;

本实施例中,若第二校验和与第一校验和相同,且存储有第二数据的预设位置的第二采样数据,则可以将第二采样数据与第一采样数据进行对比。

具体的,第一采样数据为在第一数据的预设位置进行获取得到,由于第二数据为通过验证的第一数据或初次进入分布式文件系统的第一数据,则通过检测对比第一采样数据与第二数据的预设位置的第二采样数据,可以检测第一数据在相应的写入或读取过程中是否出现错误。由此,可以防止第一校验和未出错,但篡改后的第一数据与篡改前的第一数据生成的校验和相同而误认为第一数据未发生篡改造成的漏判。

其中,为了避免第二采样数据过大而造成第二数据对预设内存区域的空间占用,第二数据的大小为可以第二采样数据的大小的200倍至1000倍。

508、若模块m的预设校验开关未开启,或预设内存区域未存储第一校验和,或第二采样数据第一采样数据相同,则将第一数据发送至模块m+k。

本实施例中的步骤508与图4所示实施例中的步骤407相同,此处不再赘述。

进一步的,在预设存储区域未存储第一校验和或确定第一数据在模块m未出现错误后,还可以将第一数据的预设位置的第一采样数据存储于预设内存区域中,该第一采样数据可以更新第二采样数据,也可以不进行更新,此处不做具体限定。

可以理解的是,基于上述实施例的说明,当预设内存区域未存储第一校验和时,可以在预设存储区域存储第二校验和,或者,也可以存储第二校验和与预设魔数、第一数据的第一数据长度、第一数据的预设位置的第一采样数据中的至少一种,并将第二校验和作为第一校验和,则在实际应用中,还可以包括更多的实施例,上述实施例仅为举例说明。

需要说明的是,预设存储区域存储有第二校验和与预设魔数、第一数据的第一数据长度、第一数据的预设位置的第一采样数据中的至少一种时,可以将第二校验和与预设魔数、第一数据长度、第一采样数据中的至少一种按照预设格式进行处理,得到第三数据,并以第三数据的形式存储于预设内存区域,此处不做具体限定。

优选的,由于数据被篡改时,从数据的首尾两端篡改的可能性较大,则为了提高发现第二校验和的篡改可能性,第二校验和可以不位于第三数据的首尾两端。

上面对本发明实施例中的验证方法分别进行了说明,下面对本发明实施例中的验证装置进行说明,该验证装置应用于基于堆叠式模块设计的分布式文件系统,分布式文件系统包括n个模块,n为不小于2的正整数:

请参阅图6,本发明实施例中验证装置一个实施例包括:

第一检测单元601,用于当模块m接收到第一数据时,检测预设内存区域是否存储有第一数据对应的第一校验和,m为不大于n的正整数;

生成单元602,用于当预设内存区域存储有第一校验和时,则利用第一数据生成第二校验和;

对比单元603,用于将第二校验和与第一校验和进行对比;

第一确定单元604,用于当第二校验和与第一校验和不相同时,则确定第一数据在模块m出现错误。

可选的,在本发明的一些实施例中,基于图6,如图7所示,装置还可以进一步包括:

第二检测单元605,用于检测模块m的预设校验开关是否开启;

第一触发单元606,用于当模块m的预设校验开关开启时,则触发第一检测单元检测预设内存区域是否存储有第一校验和。

可选的,在本发明的一些实施例中,基于图7,如图8所示,装置还可以进一步包括:

第二确定单元607,用于确定分布式文件系统的负载;

开启单元608,用于根据负载的高低开启w个模块对应的预设校验开关,w为不大于n的正整数。

可选的,在本发明的一些实施例中,开启单元607,可以进一步具体用于:

将n个模块的重要性按照由高到低的原则排序;

根据负载的高低,开启n个模块中排序靠前的w个模块对应的预设校验开关。

可选的,在本发明的一些实施例中,基于图8,如图9所示,装置还可以进一步包括:

发送单元609,用于当预设内存区域未存储第一校验和,或模块m的预设校验开关未开启,或第二校验和与第一校验和相同时,则将第一数据发送至模块m+k,k为-1或1。

可选的,在本发明的一些实施例中,基于图9,如图10所示,装置还可以进一步包括:

存储单元610,用于当预设内存区域未存储第一校验和时,在预设存储区域存储第二校验和,或存储第二校验和与预设魔数、第一数据的第一数据长度、第一数据的预设位置的第一采样数据中的至少一种,并将第二校验和作为第一校验和。

可选的,在本发明的一些实施例中,基于图10,如图11所示,当预设存储区域存储有第一校验和与第一校验和对应的第二数据的第二数据长度时,装置还可以进一步包括:

第三检测单元611,用于检测第二数据长度是否发生变化;

第二触发单元612,用于当第二数据长度未发生变化时,则触发生成单元利用第一数据生成第二校验和。

可选的,在本发明的一些实施例中,基于图11,如图12所示,当预设存储区域还存储有检测预设魔数时,装置还可以进一步包括:

第四检测单元613,用于检测预设魔数是否发生变化;

第三触发单元614,用于当预设魔数未发生变化时,则触发第三检测单元检测第二数据长度是否发生变化。

可选的,在本发明的一些实施例中,当预设存储区域还存储有第二数据的预设位置的第二采样数据时,发送单元208,可以进一步具体用于:

若第二校验和与第一校验和相同,则将第二采样数据与第一采样数据进行对比;

若第二采样数据与第一采样数据相同,则将第一数据发送至模块m+k。

上面从模块化功能实体的角度对本发明实施例中的应用页面显示装置进行了描述,下面从硬件处理的角度对本发明实施例中的计算机装置进行描述,该计算机装置可应用于基于堆叠式模块设计的分布式文件系统,分布式文件系统包括n个模块,n为不小于2的正整数:

本发明实施例中计算机装置一个实施例包括:

处理器以及存储器;

存储器用于存储计算机程序,处理器用于执行存储器中存储的计算机程序时,可以实现如下步骤:

当模块m接收到第一数据时,检测预设内存区域是否存储有第一数据对应的第一校验和,m为不大于n的正整数;

若是,则利用第一数据生成第二校验和,并将第二校验和与第一校验和进行对比;

若第二校验和与第一校验和不相同,则确定第一数据在模块m出现错误。

在本发明的一些实施例中,处理器用于执行存储器中存储的计算机程序时,还可以实现如下步骤:

检测模块m的预设校验开关是否开启;

若是,则触发检测预设内存区域是否存储有第一校验和的步骤。

在本发明的一些实施例中,处理器用于执行存储器中存储的计算机程序时,还可以实现如下步骤:

确定分布式文件系统的负载;

根据负载的高低开启w个模块对应的预设校验开关,w为不大于n的正整数。

在本发明的一些实施例中,处理器用于执行存储器中存储的计算机程序时,还可以实现如下步骤:

将n个模块的重要性按照由高到低的原则排序;

根据负载的高低,开启n个模块中排序靠前的w个模块对应的预设校验开关。

在本发明的一些实施例中,处理器用于执行存储器中存储的计算机程序时,还可以实现如下步骤:

若预设内存区域未存储第一校验和,或模块m的预设校验开关未开启,或第二校验和与第一校验和相同,则将第一数据发送至模块m+k,k为-1或1。

在本发明的一些实施例中,处理器用于执行存储器中存储的计算机程序时,还可以实现如下步骤:

当预设内存区域未存储第一校验和时,在预设存储区域存储第二校验和,或存储第二校验和与预设魔数、第一数据的第一数据长度、第一数据的预设位置的第一采样数据中的至少一种,并将第二校验和作为第一校验和。

在本发明的一些实施例中,当预设存储区域存储有第一校验和与第一校验和对应的第二数据的第二数据长度时,处理器用于执行存储器中存储的计算机程序时,还可以实现如下步骤:

检测第二数据长度是否发生变化;

若否,则触发利用第一数据生成第二校验和的步骤。

在本发明的一些实施例中,当预设存储区域还存储有检测预设魔数时,处理器用于执行存储器中存储的计算机程序时,还可以实现如下步骤:

检测预设魔数是否发生变化;

若否,则触发检测第二数据长度是否发生变化的步骤。

在本发明的一些实施例中,当预设存储区域还存储有第二数据的预设位置的第二采样数据时,处理器用于执行存储器中存储的计算机程序时,还可以实现如下步骤:

若第二校验和与第一校验和相同,则将第二采样数据与第一采样数据进行对比;

若第二采样数据与第一采样数据相同,则将第一数据发送至模块m+k。

可以理解的是,上述说明的计算机装置中的处理器执行所述计算机程序时,也可以实现上述对应的各装置实施例中各单元的功能,此处不再赘述。示例性的,所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器中,并由所述处理器执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述验证装置中的执行过程。例如,所述计算机程序可以被分割成上述验证装置中的各单元,各单元可以实现如上述相应验证装置说明的具体功能。

所述计算机装置可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述计算机装置可包括但不仅限于处理器、存储器。本领域技术人员可以理解,处理器、存储器仅仅是计算机装置的示例,并不构成对计算机装置的限定,可以包括更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述计算机装置还可以包括输入输出设备、网络接入设备、总线等。

所述处理器可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述计算机装置的控制中心,利用各种接口和线路连接整个计算机装置的各个部分。

所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述计算机装置的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。

基于数据写入方法,本发明还提供了一种计算机可读存储介质,该计算机可读存储介质可应用于基于堆叠式模块设计的分布式文件系统,分布式文件系统包括n个模块,n为不小于2的正整数,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时,可以实现如下步骤:

当模块m接收到第一数据时,检测预设内存区域是否存储有第一数据对应的第一校验和,m为不大于n的正整数;

若是,则利用第一数据生成第二校验和,并将第二校验和与第一校验和进行对比;

若第二校验和与第一校验和不相同,则确定第一数据在模块m出现错误。

在本发明的一些实施例中,计算机可读存储介质存储的计算机程序被处理器执行时,还可以实现如下步骤:

检测模块m的预设校验开关是否开启;

若是,则触发检测预设内存区域是否存储有第一校验和的步骤。

在本发明的一些实施例中,计算机可读存储介质存储的计算机程序被处理器执行时,还可以实现如下步骤:

确定分布式文件系统的负载;

根据负载的高低开启w个模块对应的预设校验开关,w为不大于n的正整数。

在本发明的一些实施例中,计算机可读存储介质存储的计算机程序被处理器执行时,还可以实现如下步骤:

将n个模块的重要性按照由高到低的原则排序;

根据负载的高低,开启n个模块中排序靠前的w个模块对应的预设校验开关。

在本发明的一些实施例中,计算机可读存储介质存储的计算机程序被处理器执行时,还可以实现如下步骤:

若预设内存区域未存储第一校验和,或模块m的预设校验开关未开启,或第二校验和与第一校验和相同,则将第一数据发送至模块m+k,k为-1或1。

在本发明的一些实施例中,计算机可读存储介质存储的计算机程序被处理器执行时,还可以实现如下步骤:

当预设内存区域未存储第一校验和时,在预设存储区域存储第二校验和,或存储第二校验和与预设魔数、第一数据的第一数据长度、第一数据的预设位置的第一采样数据中的至少一种,并将第二校验和作为第一校验和。

在本发明的一些实施例中,当预设存储区域存储有第一校验和与第一校验和对应的第二数据的第二数据长度时,计算机可读存储介质存储的计算机程序被处理器执行时,还可以实现如下步骤:

检测第二数据长度是否发生变化;

若否,则触发利用第一数据生成第二校验和的步骤。

在本发明的一些实施例中,当预设存储区域还存储有检测预设魔数时,计算机可读存储介质存储的计算机程序被处理器执行时,还可以实现如下步骤:

检测预设魔数是否发生变化;

若否,则触发检测第二数据长度是否发生变化的步骤。

在本发明的一些实施例中,当预设存储区域还存储有第二数据的预设位置的第二采样数据时,计算机可读存储介质存储的计算机程序被处理器执行时,还可以实现如下步骤:

若第二校验和与第一校验和相同,则将第二采样数据与第一采样数据进行对比;

若第二采样数据与第一采样数据相同,则将第一数据发送至模块m+k。

可以理解的是,所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在相应的一个计算机可读取存储介质中。基于这样的理解,本发明实现上述相应的实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1