多层摘要文件生成方法及文件正确性验证方法

文档序号:6378959阅读:155来源:国知局
专利名称:多层摘要文件生成方法及文件正确性验证方法
技术领域
本发明涉及网络安全领域,尤其涉及大规模并行系统下的多层摘要文件生成方法以及大规模并行系统下基于多层摘要文件的文件正确性验证方法。
背景技术
在由成千上万个CPU构成的大规模并行系统上,应用程序要处理的文件数量和容量非常巨大,盘阵上的文件内容被损坏,或者程序运行过程中,从盘阵读入内存,或者从内存写入文件时由于I/O的偶发性错误导致的数据内容出错,很难被快速检测出来。目前,传统的校验文件正确性的手段是利用MD5、shal、des等hash算法来进行文件摘要,通过对比摘要就可以发现文件内容是否被破坏。MD5全称是报文摘要算法(Message-Digest Algorithm 5),此算法对任意长度的信息逐位进行计算,产生一个二进制长度为128位的“hash值”(或称“摘要”),不同的文件产生相同的hash值的可能性是非常小的。图I为利用MD5算法计算hash值的流程图。如图I所示,MD5算法以512bit为一个分组,将待计算摘要的数据分为η个组。从第一个分组开始,为第一个分组计算一个128bit的hash值。接着,为第二个分组计算一个128bit的hash值,并将第二个分组的hash值累加到第一个分组的hash值上。如此往复,直至第 η个hash值累加值第(η-I)个hash值上。整理输出最后得到的128bit的hash值(即摘要)。校验文件正确性时,用同样的算法计算得出128bit的摘要,与之前计算得出的摘要做比较。如果一致,则文件正确;如果不一致,表明文件在I/O过程中出现错误。目前Iinux下常用的文件校验工具是md5sum,它是用来计算和校验文件摘要的工具程序。windows下也有md5sum及类似功能的文件摘要软件。如图I所示,在计算hash值时,后一分组的hash值会迭加到前一分组的hash值上,前、后hash值具有相关性。所以,用MD5算法计算摘要,实质上是一个串行计算。所以在大规模并行系统下,文件数据容量非常巨大时,利用MD5算法生成摘要或者进行校验变成了一件非常耗时的工作。另外,已有Iinux或者windows下的摘要工具都是静态的,不支持应用程序中对文件的I/O操作进行实时检测,无法及时发现I/O错误、尽早避免错误扩大。

发明内容
本发明所要解决的技术问题是在大规模并行系统上,如何快速实现对大量文件的完整性验证和大量I/O操作的正确性检查。为了解决上述问题,本发明提供了一种大规模并行系统下的多层摘要文件生成方法,包括以事先定义的原始Hash块大小为单位,将目标文件拆分成多个一级文件;用报文摘要算法为每个一级文件,生成一级层间摘要,将所述一级层间摘要保存于所述多层摘要文件中;基于所述一级层间摘要,至少使用一次报文摘要算法,生成总摘要,将所述总摘要保存于所述多层摘要文件中。可选的,所述基于所述一级层间摘要,至少使用一次报文摘要算法,生成总摘要包括使用报文摘要算法为所有一级层间摘要生成总摘要。可选的,所述基于所述一级层间摘要,至少使用一次报文摘要算法,生成总摘要包括获取事先定义的摘要层数m、第一层Hash块数Ii1、第二层Hash块数n2、…、第m层Hash 块数 nm ;当所述摘要层数m大于I时,重复以下步骤,直至形成所有m级层间摘要
I)将所有i级层间摘要拆分成n (i+1)个(i+1)级文件;1彡i彡(m-1), i为正整数;2)用报文摘要算法为每个(i+Ι)级文件,生成(i+Ι)级层间摘要,将所述(i+Ι)级层间摘要保存于所述多层摘要文件中;3)累加i后从步骤I)开始循环;使用报文摘要算法为所有m级层间摘要生成总摘要。可选的,在所述以事先定义的原始Hash块大小为单位,将目标文件拆分成多个一级文件之前,还包括定义所述多层摘要文件的结构;所述多层摘要文件的结构包括目标文件名、目标文件大小、原始Hash块大小、原始Hash块数η、η个一级层间摘要、总摘要。可选的,在所述以事先定义的原始Hash块大小为单位,将目标文件拆分成多个一级文件之前,还包括定义所述多层摘要文件的结构;所述多层摘要文件的结构包括目标文件名、目标文件大小、摘要层数m、原始Hash块大小、第一层Hash块数叫、Ii1个一级层间摘要、第二层Hash块数n2、n2个二级层间摘要、…、第m层Hash块数nm、nm个m级层间摘要、总摘要。可选的,在所述以事先定义的原始Hash块大小为单位,将目标文件拆分成多个一级文件之前,还包括为所述多层摘要文件中的目标文件名、目标文件大小、原始Hash块大小、原始Hash块个数η赋值;所述将一级层间摘要保存于多层摘要文件中包括以所述一级层间摘要为所述多层摘要文件中的η个一级层间摘要赋值;所述将总摘要保存于多层摘要文件中包括以所述总摘要为所述多层摘要文件中的总摘要赋值。可选的,在所述以事先定义的原始Hash块大小为单位,将目标文件拆分成多个一级文件之前,还包括为所述多层摘要文件的目标文件名、目标文件大小、摘要层数m、原始Hash块大小、第一层Hash块数Ii1、第二层Hash块数n2、…、第m层Hash块数nm赋值;所述将一级层间摘要保存于多层摘要文件中包括以所述一级层间摘要为所述多层摘要文件中的Ii1个一级层间摘要赋值;所述将(i+Ι)级层间摘要保存于多层摘要文件中包括以所述(i+Ι)级层间摘要为所述多层摘要文件中的n (i+1)个(i+1)级层间摘要赋值;所述将总摘要保存于多层摘要文件中包括以所述总摘要为所述多层摘要文件中的总摘要赋值。可选的,生成层间摘要由所述大规模并行系统下不同的进程并行完成。可选的,生成总摘要由单一进程完成。可选的,所述报文摘要算法为MD5算法。本发明还提供了一种大规模并行系统下基于多层摘要文件的文件正确性验证方法,包括读取所述文件对应的多层摘要文件,获取原始Hash块大小;以所述原始Hash块大小为单位,将所述文件拆分成多个一级文件;用报文摘要算法为每个一级文件,生成一级层间摘要,将所述一级层间摘要与所·述多层摘要文件中对应的一级层间摘要进行比较,若两者不一致,则输出错误信息。可选的,在输出错误信息的同时,输出所述错误信息对应的一级文件的序号。可选的,该方法还包括若所有的一级层间摘要与所述多层摘要文件中对应的所有一级层间摘要都一致,则用报文摘要算法为所有一级层间摘要,生成总摘要;将所述总摘要与所述多层摘要文件中对应的总摘要进行比较;若两者一致,则输出正确信息;若两者不一致,则输出错误信息。可选的,该方法还包括若所有的一级层间摘要与所述多层摘要文件中对应的所有一级层间摘要都一致,则获取所述多层摘要文件中的摘要层数m、第一层Hash块数Ii1、第二层Hash块数n2、…、第m层Hash块数nm ;当所述摘要层数m大于I时,重复以下步骤,直至生成所有m级层间摘要I)按照第(i+Ι)层Hash块数n (i+1),将所有i级层间摘要拆分成η (如个(i+Ι)级文件;1 ( i ^ (m-1), i为正整数;2)用报文摘要算法为每个(i+Ι)级文件,生成(i+Ι)级层间摘要;3)将所述(i+Ι)级层间摘要与所述多层摘要文件中对应的(i+Ι)级层间摘要进行比较,若两者一致,则4)累加i后从步骤I)开始循环;若两者不一致,则输出错误信息;若所有的m级层间摘要与所述多层摘要文件中对应的所有m级层间摘要都一致,则用报文摘要算法为所有m级层间摘要,生成总摘要;将所述总摘要与所述多层摘要文件中对应的总摘要进行比较;若两者一致,则输出正确信息;若两者不一致,则输出错误信息。 可选的,生成层间摘要由所述大规模并行系统下不同的进程并行完成。可选的,生成总摘要由单一进程完成。可选的,所述报文摘要算法为MD5算法。与现有技术相比,本发明的技术方案具有以下优点I、本发明分层次地产生层间摘要,各层间摘要可由不同的进程并行完毕,再对最底层的层间摘要生成一个总摘要,可充分利用大规模并行系统的处理能力,大大提高摘要生成速度。对应地,在验证文件正确性时,分层次地产生层间摘要,将所得的层间摘要与事先计算过的摘要文件中保存的层间摘要做比较,不一致即报错,可充分利用大规模并行系统的处理能力,大大提高文件验证速度。
2、可选方案中,在文件正确性验证过程中,由于一级层间摘要基于文件的分块进行,所以当一级文件摘要出错时,除了可报告错误之外,还可将错误准确定位至具体的文件分块中,及时发现I/o错误,尽早避免错误扩大。


图I为现有的MD5算法计算hash值的方法流程图;图2为本发明的大规模并行系统下的多层摘要文件生成方法的一具体实施方式
的流程图;图3为本发明的大规模并行系统下基于多层摘要文件的文件正确性验证方法的一具体实施方式
的流程图;图4为本发明的大规模并行系统下的多层摘要文件生成方法的第一实施例、本发明的大规模并行系统下基于多层摘要文件的文件正确性验证方法的第一实施例的摘要文 件结构示意图;图5为本发明的大规模并行系统下的多层摘要文件生成方法的第一实施例的流程图;图6为大规模并行系统下基于多层摘要文件的文件正确性验证方法的第一实施例流程图;图7为本发明的大规模并行系统下的多层摘要文件生成方法的另一具体实施方式
的流程图;图8为本发明的大规模并行系统下基于多层摘要文件的文件正确性验证方法的另一具体实施方式
的流程图;图9为本发明的大规模并行系统下的多层摘要文件生成方法的第二实施例、本发明的大规模并行系统下基于多层摘要文件的文件正确性验证方法的第二实施例的摘要文件结构示意图;图10为本发明的大规模并行系统下的多层摘要文件生成方法的第二实施例的流程图;图11为本发明的大规模并行系统下基于多层摘要文件的文件正确性验证方法的第二实施例的流程图。
具体实施例方式在下面的描述中阐述了很多具体细节以便于充分理解本发明。但是本发明能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广,因此本发明不受下面公开的具体实施的限制。其次,本发明利用示意图进行详细描述,在详述本发明实施例时,为便于说明,所述示意图只是实例,其在此不应限制本发明保护的范围。为了解决背景技术中的技术问题,本发明提供了一种大规模并行系统下的多层摘要文件生成方法。图2为本发明的大规模并行系统下的多层摘要文件生成方法的一具体实施方式
的流程图,本具体实施方式
中仅形成了一级层间摘要。如图2所示,本具体实施方式
包括以下步骤
执行步骤S21,以事先定义的原始Hash块大小为单位,将目标文件拆分成多个一级文件。需要说明的是,在所述以事先定义的原始Hash块大小为单位,将目标文件拆分成多个一级文件之前,还可包括定义所述多层摘要文件的结构。所述多层摘要文件的结构包括目标文件名、目标文件大小、原始Hash块大小、原始Hash块数η、η个一级层间摘要、总摘要。在所述以事先定义的原始Hash块大小为单位,将目标文件拆分成多个一级文件之前、定义所述多层摘要文件的结构之后,还可包括为所述多层摘要文件中的目标文件名、目标文件大小、原始Hash块大小、原始Hash块个数η赋值。执行步骤S22,用报文摘要算法为每个一级文件,生成一级层间摘要,将所述一级层间摘要保存于所述多层摘要文件中。具体地,所述将一级层间摘要保存于多层摘要文件中包括以所述一级层间摘要为所述多层摘要文件中的η个一级层间摘要赋值。所述为每个一级文件,生成一级层间摘要由所述大规模并行系统下不同的进程并行完成。
执行步骤S23,用报文摘要算法为所有一级层间摘要,生成总摘要,将所述总摘要保存于所述多层摘要文件中。具体地,所述将总摘要保存于多层摘要文件中包括以所述总摘要为所述多层摘要文件中的总摘要赋值。所述为所有一级层间摘要,生成一个总摘要由单一进程完成。需要说明的是,虽然本具体实施方式
中采用的报文摘要算法为MD5算法,但不应理解为对本发明的具体限定。本领域技术人员可以理解,本领域现有技术中的其他报文摘要算法,比如shal、des等,皆可应用于本发明中。对应地,本发明还提供了一种大规模并行系统下基于多层摘要文件的文件正确性验证方法。图3为本发明的大规模并行系统下基于多层摘要文件的文件正确性验证方法的一具体实施方式
的流程图,本具体实施方式
中仅形成了一级层间摘要。如图3所示,本具体实施方式
包括以下步骤执行步骤S31,读取所述文件对应的多层摘要文件,获取原始Hash块大小。执行步骤S32,以原始Hash块大小为单位,将文件拆分成多个一级文件。执行步骤S33,用报文摘要算法为每个一级文件,生成一级层间摘要,将所述一级层间摘要与所述多层摘要文件中对应的一级层间摘要进行比较,若两者不一致,则输出错误信息,验证结束。同时,还可输出所述错误信息对应的一级文件的序号。所述为每个一级文件,生成一级层间摘要由所述大规模并行系统下不同的进程并行完成。本具体实施方式
可进一步包括执行步骤S34,若所有的一级层间摘要与所述多层摘要文件中对应的所有一级层间摘要都一致,则用报文摘要算法由单一进程为所有一级层间摘要,生成一个总摘要。所述生成总摘要由单一进程完成。执行步骤S35,将所述总摘要与所述多层摘要文件中对应的总摘要进行比较;若两者一致,则输出正确信息;若两者不一致,则输出错误信息。需要说明的是,虽然本具体实施方式
中采用的报文摘要算法为MD5算法,但不应理解为对本发明的具体限定。本领域技术人员可以理解,本领域现有技术中的其他报文摘要算法,比如shal、des等,皆可应用于本发明中。下面结合附图和具体实施例对本发明的技术方案做进一步说明。
图4为上述大规模并行系统下的多层摘要文件生成方法的第一实施例以及上述大规模并行系统下基于多层摘要文件的文件正确性验证方法的第一实施例的摘要文件结构示意图。如图4所示,本实施例的摘要文件包括文件名、文件大小、Hash块大小、Hash块个数、Hashl Hashl024共1024个16字节的hash值(即一级层间摘要)以及一个总Hash值(即总摘要)。在生成多层摘要文件之前,本实施例已经对所述多层摘要文件中的若干内容赋值,具体包括本实施例中的文件名为File,该文件大小为1GB,每个Hash块大小为IMB, Hash 块个数为 1024。图5为上述大规模并行系统下的多层摘要文件生成方法的第一实施例的流程图。如图5所示,首先按照多层摘要文件中的Hash块大小1MB,将文件File拆分成1024个一级文件。然后,由互相独立的1024个CPU分别读入一个一级文件,用MD5计算该一级文件的一级层间摘要,保存于多层摘要文件中对应的一级层间摘要中。比如CPUi读入第I个一级文件,用MD5算法计算出第I个一级文件的128bit的一级层间摘要Hashl,保存于所述多 层摘要文件中对应的Hashl处。接着,在1024个一级层间摘要Hashl Hashl024都已生成之后,由CPU1收集1024个一级层间摘要,并用MD5为1024个一级层间摘要生成总摘要总Hash值,保存于所述多层摘要文件中对应的总Hash值中。计算总摘要仅由CPU1中的单一进程完成。至此,文件File的多层摘要文件生成完毕。对应地,图6为上述大规模并行系统下基于多层摘要文件的文件正确性验证方法的第一实施例的流程图。如图6所示,首先读取文件File对应的多层摘要文件,获取原始Hash块大小为IMB。接着,以IMB为单位,将文件File拆分成1024个一级文件。然后,由互相独立的1024个CPU分别读入一个一级文件,用MD5计算该一级文件的一级层间摘要,将该一级层间摘要与多层摘要文件中对应的一级层间摘要进行比较。如果两者不一致,说明该一级文件的I/o发生错误,则输出错误信息,并可同时输出该一级文件的序号。比如=CPU2读入第2个一级文件,用MD5算法计算出第2个一级文件的128bit的一级层间摘要Hash2’,将该一级层间摘要Hash2’与多层摘要文件中对应的一级层间摘要Hash2进行比较。若两者不同,则表明第2个一级文件在I/O过程中出现了错误,则输出错误信息,同时输出错误的一级文件序号2。如果1024个的一级层间摘要与多层摘要文件中对应的1024个一级层间摘要都一致,说明所有的一级层间摘要在I/o过程中均正确。理论上,在一级层间摘要都正确的基础上,总摘要应该和多层摘要文件中对应的总摘要一致。若出现不一致,也应限于总摘要计算错误。为了确保验证的完整性,由CPU1收集1024个一级层间摘要Hashl’ Hashl024’,并用MD5为这1024个一级层间摘要生成总摘要总Hash值’,将该总摘要总Hash值’与多层摘要文件中对应的总摘要总Hash值进行比较。若两者一致,则输出验证正确信息。否则,输出错误信息。至此,文件File的正确性已验证完毕。图7为本发明的大规模并行系统下的多层摘要文件生成方法的另一具体实施方式
的流程图。与前一具体实施方式
相同的部分,此处不再赘述。与前一具体实施方式
不同的是,本具体实施方式
中,除了一级层间摘要,还根据事先定义的摘要层数m,生成第2层 第m层的层间摘要,保存于所述多层摘要文件中。对应地,本具体实施方式
的摘要文件结构也有所不同,增加了若干内容,比如摘要层数m,以及第2层 第m层的块数。如图7所示,本具体实施方式
包括以下步骤执行步骤S71,以事先定义的原始Hash块大小为单位,将目标文件拆分成多个一级文件。需要说明的是,在所述以事先定义的原始Hash块大小为单位,将目标文件拆分成多个一级文件之前,还可包括定义所述多层摘要文件的结构。所述多层摘要文件的结构包括目标文件名、目标文件大小、摘要层数m、原始Hash块大小、第一层Hash块数Iipn1个一级层间摘要、第二层Hash块数n2、n2个二级层间摘要、…、第m层Hash块数nm、nm个m级层间摘要、总摘要。在所述以事先定义的原始Hash块大小为单位,将目标文件拆分成多个一级文件之前、定义所述多层摘要文件的结构之后,还可包括为所述多层摘要文件的目标
文件名、目标文件大小、摘要层数m、原始Hash块大小、第一层Hash块数Ii1、第二层Hash块数n2、…、第m层Hash块数nm赋值。执行步骤S72,用报文摘要算法为每个一级文件,生成一级层间摘要,将所述一级层间摘要保存于所述多层摘要文件中。具体地,所述将一级层间摘要保存于多层摘要文件中包括以所述一级层间摘要为所述多层摘要文件中的Ii1个一级层间摘要赋值。所述为每个一级文件,生成一级层间摘要由所述大规模并行系统下不同的进程并行完成。执行步骤S73,获取事先定义的摘要层数m、第一层Hash块数Ii1、第二层Hash块数n2、…、第m层Hash块数nm。执行步骤S74,为局部变量i赋初值I。执行步骤S75,判断i是否彡(m-1)。若i彡(m-1),即还有层间摘要未生成,则执行步骤S76,将所有i级层间摘要拆分成n (i+1)个(i+1)级文件。执行步骤S77,用报文摘要算法为每个(i+Ι)级文件,生成一个(i+Ι)级层间摘要,将所述(i+Ι)级层间摘要保存于所述多层摘要文件对应的n (i+1)个(i+1)级层间摘要中。具体地,所述将(i+1)级层间摘要保存于多层摘要文件中包括以所述(i+1)级层间摘要为所述多层摘要文件中的n (i+1)个(i+1)级层间摘要赋值。执行步骤S78,累加i后,至步骤S75处,循环执行。若i> (m-l),S卩m级的层间摘要均已生成,则执行步骤S79,用报文摘要算法为所有m级层间摘要,生成一个总摘要,将所述总摘要保存于所述多层摘要文件对应的总摘要中。具体地,所述将总摘要保存于多层摘要文件中包括以所述总摘要为所述多层摘要文件中的总摘要赋值。所述生成一个总摘要由单一进程完成。至此,多层摘要文件已生成。需要说明的是,虽然本具体实施方式
中采用的报文摘要算法为MD5算法,但不应理解为对本发明的具体限定。本领域技术人员可以理解,本领域现有技术中的其他报文摘要算法,比如shal、des等,皆可应用于本发明中。对应地,图8为本发明的大规模并行系统下基于多层摘要文件的文件正确性验证方法的另一具体实施方式
的流程图。与前一具体实施方式
相同的部分,此处不再赘述。与前一具体实施方式
不同的是,本具体实施方式
所采用的多层摘要文件中包括了两级以上的层间摘要。如图8所示,本具体实施方式
包括以下步骤
执行步骤S801,读取所述文件对应的多层摘要文件,获取原始Hash块大小。执行步骤S802,以原始Hash块大小为单位,将文件拆分成η个一级文件。执行步骤S803,用报文摘要算法为每个一级文件,生成一级层间摘要,将所述一级层间摘要与所述多层摘要文件中对应的一级层间摘要进行比较,若两者不一致,则输出错
误信息。本具体实施方式
可进一步包括执行步骤S804,若所有的一级层间摘要与所述多层摘要文件中对应的所有一级层间摘要都一致,即各一级文件均未出错,则获取所述多层摘要文件中的摘要层数m、第一层Hash块数Ii1、第二层Hash块数n2、…、第m层Hash块数nm。执行步骤S805,为局部变量i赋初值I。·执行步骤S806,判读i是否彡(m-Ι)。若i彡(m-Ι),则执行步骤S807,按照第(i+Ι)层Hash块数n(i+1),将所有i级层间摘要拆分成n (i+1)个(i+1)级文件。执行步骤S808,用报文摘要算法为每个(i+Ι)级文件,生成一个(i+Ι)级层间摘要。执行步骤S809,将所述(i+Ι)级层间摘要与所述多层摘要文件中对应的(i+Ι)级层间摘要进行比较,判断两者是否一致。若一致,则执行步骤S811,累加i后,至步骤S806处,循环执行。若不一致,则执行步骤S810,输出错误信息,验证结束。若i> (m-l),S卩m层的层间摘要均已生成,若所有的m级层间摘要与所述多层摘要文件中对应的所有m级层间摘要都一致,则执行步骤S812,用报文摘要算法为所有m级层间摘要,生成一个总摘要。执行步骤S813,将所述总摘要与所述多层摘要文件中对应的总摘要进行比较;若两者一致,则输出正确信息;若两者不一致,则输出错误信息。需要说明的是,本具体实施方式
中的各层间摘要均可由所述大规模并行系统下不同的进程并行生成,总摘要由单一进程生成。需要说明的是,虽然本具体实施方式
中采用的报文摘要算法为MD5算法,但不应理解为对本发明的具体限定。本领域技术人员可以理解,本领域现有技术中的其他报文摘要算法,比如shal、des等,皆可应用于本发明中。下面结合附图和具体实施例对本发明的技术方案做进一步说明。图9为上述大规模并行系统下的多层摘要文件生成方法的第二实施例以及上述大规模并行系统下基于多层摘要文件的文件正确性验证方法的第二实施例的摘要文件结构示意图。如图9所示,本实施例的摘要文件包括文件名、文件大小、层数、Hash块大小、第一层Hash块数、Hashl Hashl024共1024个16字节的hash值(即一级层间摘要)、第二层Hash块数、Hashl025 Hashl028共4个16字节的hash值(即二级层间摘要)以及总Hash值(即总摘要)。在生成多层摘要文件之前,本实施例已经对所述多层摘要文件中的若干内容赋值,包括本实施例中的文件名为File,该文件大小为1GB,该文件的层间摘要为2层,Hash块大小为1MB,第一层Hash块数为1024个,第二层Hash块数为4个。需要说明的是,虽然本实施例采用了 2级层间摘要,但本发明对层间摘要的数量并不作具体限定,操作人员可根据文件规模及运算速度的要求自定确定采用几级层间摘要。图10为本发明的大规模并行系统下的多层摘要文件生成方法的第二实施例的流程图。如图10所示,首先按照多层摘要文件中的Hash块大小1MB,将文件File拆分成1024个一级文件。然后,由互相独立的1024个CPU分别用报文摘要算法为该一级文件生成一个一级层间摘要,保存于多层摘要文件中对应的一级层间摘要中。比如-CPU1读入第I个一级文件,用MD5算法计算出第I个一级文件的128bit的一级层间摘要Hashl,保存于所述多层摘要文件中对应的Hashl处。接着,在1024个一级层间摘要Hashl Hashl024都已生成之后,获取事先定义的摘要层数为2、第一层Hash块数为1024、第二层Hash块数为4。接着,将1024个一级层间摘要拆分成4 (即第二层Hash块数)个二级文件。由互相独立的4个CPU分别用报文摘要算法为该二级文件生成一个二级层间摘·要,保存于多层摘要文件中对应的二级层间摘要中。比如CPU2读入第2个二级文件,用MD5算法计算出第2个二级文件的128bit的二级层间摘要Hashl026,保存于所述多层摘要文件中对应的Hashl026处。然后,由CPU1用MD5为4个二级层间摘要生成总摘要总Hash值,保存于所述多层摘要文件中对应的总Hash值中。至此,文件File的多层摘要文件已生成。图11为本发明的大规模并行系统下基于多层摘要文件的文件正确性验证方法的第二实施例的流程图。如图11所示,首先读取文件File对应的多层摘要文件,获取原始Hash块大小为IMB。接着,以IMB为单位,将文件File拆分成1024个一级文件。然后,由互相独立的1024个CPU分别读入一个一级文件,用MD5计算该一级文件的一级层间摘要,将该一级层间摘要与多层摘要文件中对应的一级层间摘要进行比较。如果两者不一致,说明该一级文件的I/o发生错误,则输出错误信息,同时输出该一级文件的序号。比如=CPU2读入第2个一级文件,用MD5算法计算出第2个一级文件的128bit的一级层间摘要Hash2’,将该一级层间摘要Hash2’与多层摘要文件中对应的一级层间摘要Hash2进行比较。若两者不同,则表明第2个一级文件在I/O过程中出现了错误,输出错误信息,同时输出错误的一级文件序号2。如果1024个的一级层间摘要与多层摘要文件中对应的1024个一级层间摘要都一致,说明所有的一级层间摘要在I/o过程中均正确。接着,获取多层摘要文件中的摘要层数
2、第一层Hash块数1024、第二层Hash块数4。将1024个一级层间摘要拆分成4 (即第二层Hash块数)个二级文件。由互相独立的4个CPU分别读入一个二级文件,用报文摘要算法为该二级文件生成一个二级层间摘要,将该二级层间摘要与多层摘要文件中对应的二级层间摘要进行比较。如果两者不一致,说明该二级文件的I/o发生错误,则输出错误信息。比如CPU2读入第2个二级文件,用MD5算法计算出第2个二级文件的128bit的二级层间摘要Hashl026’,将该二级层间摘要Hashl026’与多层摘要文件中对应的二层间摘要Hashl026进行比较。若两者不同,则表明第2个二级文件在I/O过程中出现了错误,输出错误信息。如果4个的二级层间摘要与多层摘要文件中对应的4个二级层间摘要都一致,则由CPU1用MD5为4个二级层间摘要生成总摘要总Hash值’,将该总摘要总Hash值’与多层摘要文件中对应的总摘要总Hash值进行比较。若两者一致,则输出验证正确信息。否则,输出错误信息。至此,文件File的正确性已验证完毕。需要说明的是,通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明的部分或全部可借助软件并结合必需的通用硬件平台来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可包括其上存储有机器可执行指令的一个或多个机器可读介质,这些指令在由诸如计算机、计算机网络或其他电子设备等一个或多个机器执行时可使得该一个或多个机器根据本发明的实施例来执行操作。机器可读介质可包括,但不限于,软盘、光盘、CD-ROM (紧致盘-只读存储器)、磁光盘、ROM (只读存储器)、RAM (随机存取存储器)、EPROM (可擦除可编程只读存储器)、EEPROM (电可擦除可编程只读存储器)、磁卡或光卡、闪存、或适于存储机器可执行指令的其他类型的介质/机器可读介质。本发明可用于众多通用或专用的计算系统环境或配置中。例如个人计算机、服务 器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等。本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。本发明虽然已以较佳实施例公开如上,但其并不是用来限定本发明,任何本领域技术人员在不脱离本发明的精神和范围内,都可以利用上述揭示的方法和技术内容对本发明技术方案做出可能的变动和修改,因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化及修饰,均属于本发明技术方案的保护范围。
权利要求
1.一种大规模并行系统下的多层摘要文件生成方法,其特征在于,包括 以事先定义的原始Hash块大小为单位,将目标文件拆分成多个一级文件; 用报文摘要算法为每个一级文件,生成一级层间摘要,将所述一级层间摘要保存于所述多层摘要文件中; 基于所述一级层间摘要,至少使用一次报文摘要算法,生成总摘要,将所述总摘要保存于所述多层摘要文件中。
2.如权利要求I所述的大规模并行系统下的多层摘要文件生成方法,其特征在于,所述基于所述一级层间摘要,至少使用一次报文摘要算法,生成总摘要包括 使用报文摘要算法为所有一级层间摘要生成总摘要。
3.如权利要求I所述的大规模并行系统下的多层摘要文件生成方法,其特征在于,所述基于所述一级层间摘要,至少使用一次报文摘要算法,生成总摘要包括 获取事先定义的摘要层数m、第一层Hash块数Ii1、第二层Hash块数n2、...、第m层Hash块数Iini ; 当所述摘要层数m大于I时,重复以下步骤,直至形成所有m级层间摘要 1)将所有i级层间摘要拆分成n(i+1)个(i+1)级文件;1彡i彡(m-1), i为正整数; 2)用报文摘要算法为每个(i+1)级文件,生成(i+1)级层间摘要,将所述(i+1)级层间摘要保存于所述多层摘要文件中; 3)累加i后从步骤I)开始循环; 使用报文摘要算法为所有m级层间摘要生成总摘要。
4.如权利要求2所述的大规模并行系统下的多层摘要文件生成方法,其特征在于,在所述以事先定义的原始Hash块大小为单位,将目标文件拆分成多个一级文件之前,还包括定义所述多层摘要文件的结构; 所述多层摘要文件的结构包括目标文件名、目标文件大小、原始Hash块大小、原始Hash块数η、η个一级层间摘要、总摘要。
5.如权利要求3所述的大规模并行系统下的多层摘要文件生成方法,其特征在于,在所述以事先定义的原始Hash块大小为单位,将目标文件拆分成多个一级文件之前,还包括定义所述多层摘要文件的结构; 所述多层摘要文件的结构包括目标文件名、目标文件大小、摘要层数m、原始Hash块大小、第一层Hash块数Iipn1个一级层间摘要、第二层Hash块数n2、n2个二级层间摘要、…、第m层Hash块数nm、nm个m级层间摘要、总摘要。
6.如权利要求4所述的大规模并行系统下的多层摘要文件生成方法,其特征在于 在所述以事先定义的原始Hash块大小为单位,将目标文件拆分成多个一级文件之前,还包括为所述多层摘要文件中的目标文件名、目标文件大小、原始Hash块大小、原始Hash块个数η赋值; 所述将一级层间摘要保存于多层摘要文件中包括以所述一级层间摘要为所述多层摘要文件中的η个一级层间摘要赋值; 所述将总摘要保存于多层摘要文件中包括以所述总摘要为所述多层摘要文件中的总摘要赋值。
7.如权利要求5所述的大规模并行系统下的多层摘要文件生成方法,其特征在于在所述以事先定义的原始Hash块大小为单位,将目标文件拆分成多个一级文件之前,还包括为所述多层摘要文件的目标文件名、目标文件大小、摘要层数m、原始Hash块大小、第一层Hash块数Ii1、第二层Hash块数n2、...、第m层Hash块数nm赋值; 所述将一级层间摘要保存于多层摘要文件中包括以所述一级层间摘要为所述多层摘要文件中的Ii1个一级层间摘要赋值; 所述将(i+Ι)级层间摘要保存于多层摘要文件中包括以所述(i+1)级层间摘要为所述多层摘要文件中的n (i+1)个(i+1)级层间摘要赋值; 所述将总摘要保存于多层摘要文件中包括以所述总摘要为所述多层摘要文件中的总摘要赋值。
8.如权利要求2或3所述的任一种大规模并行系统下的多层摘要文件生成方法,其特征在于,生成层间摘要由所述大规模并行系统下不同的进程并行完成。
9.如权利要求2或3所述的任一种大规模并行系统下的多层摘要文件生成方法,其特征在于,生成总摘要由单一进程完成。
10.如权利要求2或3所述的任一种大规模并行系统下的多层摘要文件生成方法,其特征在于,所述报文摘要算法为MD5算法。
11.一种大规模并行系统下基于多层摘要文件的文件正确性验证方法,其特征在于,包括 读取所述文件对应的多层摘要文件,获取原始Hash块大小; 以所述原始Hash块大小为单位,将所述文件拆分成多个一级文件; 用报文摘要算法为每个一级文件,生成一级层间摘要,将所述一级层间摘要与所述多层摘要文件中对应的一级层间摘要进行比较,若两者不一致,则输出错误信息。
12.如权利要求11所述的大规模并行系统下基于多层摘要文件的文件正确性验证方法,其特征在于,在输出错误信息的同时,输出所述错误信息对应的一级文件的序号。
13.如权利要求11所述的大规模并行系统下基于多层摘要文件的文件正确性验证方法,其特征在于,该方法还包括 若所有的一级层间摘要与所述多层摘要文件中对应的所有一级层间摘要都一致,则用报文摘要算法为所有一级层间摘要,生成总摘要; 将所述总摘要与所述多层摘要文件中对应的总摘要进行比较;若两者一致,则输出正确信息;若两者不一致,则输出错误信息。
14.如权利要求11所述的大规模并行系统下基于多层摘要文件的文件正确性验证方法,其特征在于,该方法还包括 若所有的一级层间摘要与所述多层摘要文件中对应的所有一级层间摘要都一致,则获取所述多层摘要文件中的摘要层数m、第一层Hash块数Ii1、第二层Hash块数n2、…、第m层Hash 块数 nm ; 当所述摘要层数m大于I时,重复以下步骤,直至生成所有m级层间摘要 O按照第(i+Ι)层Hash块数n (i+n,将所有i级层间摘要拆分成n (i+nf(i+l)级文件;I彡i ^ (m-1), i为正整数; 2)用报文摘要算法为每个(i+Ι)级文件,生成(i+Ι)级层间摘要; 3)将所述(i+Ι)级层间摘要与所述多层摘要文件中对应的(i+1)级层间摘要进行比较,若两者一致,则4)累加i后从步骤I)开始循环;若两者不一致,则输出错误信息; 若所有的m级层间摘要与所述多层摘要文件中对应的所有m级层间摘要都一致,则用报文摘要算法为所有m级层间摘要,生成总摘要; 将所述总摘要与所述多层摘要文件中对应的总摘要进行比较;若两者一致,则输出正确信息;若两者不一致,则输出错误信息。
15.如权利要求13或14所述的任一种大规模并行系统下基于多层摘要文件的文件正确性验证方法,其特征在于,生成层间摘要由所述大规模并行系统下不同的进程并行完成。
16.如权利要求13或14所述的任一种大规模并行系统下基于多层摘要文件的文件正确性验证方法,其特征在于,生成总摘要由单一进程完成。
17.如权利要求13或14所述的任一种大规模并行系统下基于多层摘要文件的文件正确性验证方法,其特征在于,所述报文摘要算法为MD5算法。
全文摘要
大规模并行系统下的多层摘要文件生成方法及文件正确性验证方法。多层摘要文件生成方法包括以原始Hash块大小为单位,将目标文件拆分成多个一级文件;用报文摘要算法为每个一级文件生成一级层间摘要;基于一级层间摘要,至少使用一次报文摘要算法生成总摘要。文件正确性验证方法包括读取文件对应的多层摘要文件,获取原始Hash块大小;以原始Hash块大小为单位,将文件拆分成多个一级文件;用报文摘要算法为每个一级文件生成一级层间摘要,将一级层间摘要与多层摘要文件中对应的一级层间摘要进行比较,若不一致,则输出错误信息。本发明可在大规模并行系统上快速实现大量文件的正确性检查。
文档编号G06F11/00GK102946379SQ20121039476
公开日2013年2月27日 申请日期2012年10月16日 优先权日2012年10月16日
发明者何王全, 方燕飞, 权建校, 刘勇, 文延华, 魏迪, 毛兴权, 王珊珊 申请人:无锡江南计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1