本发明涉及信息存储技术领域,尤其涉及的是一种分布式存储多副本快速校验一致性的方法及存储架构。
背景技术:
随着信息化时代的来临,全球数据量正处于爆炸式增长的趋势。提高存储系统可靠性以及保障数据可用性已成为企业的研究重点。现有的分布式存储系统中,绝大多数是通过多副本技术来提升系统可靠性、可用性、性能以及可扩展性。但分布式存储系统都是通过网络通信,网络的不稳定性容易造成后端数据不一致,并且分布式存储系统一般包含较多的服务器主机和磁盘数量,硬件损坏的概率也比较高。
如果不能快速检测副本的一致性,分布式存储系统的数据完整性和高可用性就大大降低。现有校验一致性方法主要是计算文件的哈希值,并对比多个副本文件的哈希值是否一致来判断文件是否数据一致。
但如果对于大型文件,计算哈希值将消耗大量的cpu和存储主机带宽,严重影响系统的性能。并且文件不一致的位置往往比较少,但计算文件哈希值需要读取整个文件的内容,造成巨大资源的浪费。
因此,现有技术还有待于改进和发展。
技术实现要素:
本发明要解决的技术问题在于,针对现有技术的上述缺陷,提供一种分布式存储多副本快速校验一致性的方法及存储架构,旨在提供一种提高一致性检测速度,同时降低存储主机带宽消耗,并且加快数据校验速度的方法。
本发明解决技术问题所采用的技术方案如下:
一种分布式存储多副本快速校验一致性的方法,所述分布式存储采用控制主机-存储主机的处理架构,该方法包括步骤:
a、预先将存储的文件均匀划分为若干数据段,每个数据段分别设置有单独对应的第一哈希值,且设置有用于表示对应第一哈希值是否过期的标志位;
b、当接收到写请求时,根据写请求的偏移量和长度,计算出对应的标志位,并将所述标志位设置为过期;
c、筛选出过期的标志位,更新所述标志位对应的第一哈希值后,根据各数据段的第一哈希值计算出整个文件的第二哈希值。
所述的分布式存储多副本快速校验一致性的方法,其中,所述第一哈希值与标志位采用额外新建文件进行保存。
所述的分布式存储多副本快速校验一致性的方法,其中,初始化时,第一哈希值与标志位均设置为0;且将未写入过的数据段对应的第一哈希值设置为0。
所述的分布式存储多副本快速校验一致性的方法,其中,所述步骤a具体包括:
a1、预先将存储的文件划分为若干数据段,每个数据段大小为4m,并进行初始化设置;
a2、每个数据段分别设置有单独对应的第一哈希值,且设置有用于表示对应第一哈希值是否过期的标志位。
所述的分布式存储多副本快速校验一致性的方法,其中,所述步骤b具体包括:
b1、当接收到写请求时,根据写请求的偏移量和长度,计算出对应的标志位;
b2、并将所述标志位从0设置为1,表示所述标志位已过期。
所述的分布式存储多副本快速校验一致性的方法,其中,所述步骤c具体包括:
c1、筛选出过期的标志位,计算出过期的标志位新的第一哈希值;
c2、判断在计算新的第一哈希值期间,是否有标志位被设置为过期,若是则执行步骤c1,若否则将新的第一哈希值写入存储主机;
c3、根据各数据段的第一哈希值计算出整个文件的第二哈希值。
所述的分布式存储多副本快速校验一致性的方法,其中,所述步骤c2具体为:在控制主机的内存中将标志位初始化为0,判断在计算新的第一哈希值期间,是否有标志位被设置为1,若是则执行步骤c1,若否则将新的第一哈希值写入存储主机。
一种存储架构,其中,所述存储架构采用控制主机-存储主机的处理架构;
所述控制主机中构建有虚拟磁盘,并用于管理虚拟磁盘的生命周期,完成数据的接收、缓存、转发功能;
所述存储主机由多个存储介质组成,用于冗余数据的存储;
所述存储架构中存储有计算机程序,该计算机程序被控制主机执行时实现上述任一项所述的分布式存储多副本快速校验一致性的方法的步骤。
本发明的有益效果:本发明提供一种分布式存储多副本快速校验一致性的方法及存储架构,通过把一个大文件划分为若干数据段,分数据段计算文件的哈希值,再通过各个数据段的哈希值来计算整个文件的哈希值;通过上述方法,只需记录哪些数据段被修改,则更新对应数据段的哈希值即可,避免了校验一致性时需读取整个文件的数据,从而大大提高一致性校检速度,降低了存储主机带宽的消耗;并且分数据段计算哈希值,在系统空闲时可更容易的实现并发计算,大大加快了数据校验的速度。
附图说明
图1是本发明一种分布式存储多副本快速校验一致性的方法较佳实施例的流程图。
图2是本发明一种存储架构较佳实施例的原理框图。
图3是本发明一种分布式存储多副本快速校验一致性的方法较佳实施例的分数据段第一哈希值示意图。
图4是本发明一种分布式存储多副本快速校验一致性的方法较佳实施例的更新过期第一哈希值流程图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例提供了一种分布式存储多副本快速校验一致性的方法,请参见图1-4,如图所示,通过采用控制主机-存储主机的处理架构。
具体包括如下步骤:
s100、预先将存储的文件均匀划分为若干数据段,每个数据段分别设置有单独对应的第一哈希值,且设置有用于表示对应第一哈希值是否过期的标志位。
s101、预先将存储的文件划分为若干数据段,每个数据段大小为4m,并进行初始化设置。
s102、每个数据段分别设置有单独对应的第一哈希值,且设置有用于表示对应第一哈希值是否过期的标志位。
本发明实施例中,假设大文件的大小为100g。每一数据段大小为4m,总共分成25600个数据段,如果采用crc32哈希算法,每个数据段需要消耗4b来存储第一哈希值,整个第一哈希值的文件需要100k来存储第一哈希值。每个数据段段还需要1位标志位来表示第一哈希值是否过期,整个标志位的文件需要3200b来存储标志位。上述第一哈希值与标志位消耗的存储开销为(100k+3200b)/100g≈0.0001%。
第一哈希值的标志位需要加载到内存中,加快判断,由上述可知,100g的文件所需的标志位占用的内存空间不到4k。
s200、当接收到写请求时,根据写请求的偏移量和长度,计算出对应的标志位,并将所述标志位设置为过期。
s201、当接收到写请求时,根据写请求的偏移量和长度,计算出对应的标志位。
s202、并将所述标志位从0设置为1,表示所述标志位已过期。
本发明实施例中,初始化时,第一哈希值与标志位均设置为0;且将未写入过的数据段对应的第一哈希值设置为0。
当有写请求时,根据写请求的偏移量和长度,计算当前写请求涉及哪些标志位,如果标志位为0,需要把标志位设置为1,表明对应数据段的第一哈希值已经过期,下次需要更新;如果修改了标志位,需要把标志位写入存储主机,保证最新的标志位不会因为断电等异常情况导致丢失。
s300、筛选出过期的标志位,更新所述标志位对应的第一哈希值后,根据各数据段的第一哈希值计算出整个文件的第二哈希值。
s301、筛选出过期的标志位,计算出过期的标志位新的第一哈希值。
s302、判断在计算新的第一哈希值期间,是否有标志位被设置为过期,若是则执行步骤c1,若否则将新的第一哈希值写入存储主机。
s303、根据各数据段的第一哈希值计算出整个文件的第二哈希值。
所述步骤s302具体为:
在控制主机的内存中将标志位初始化为0,判断在计算新的第一哈希值期间,是否有标志位被设置为1,若是则执行步骤c1,若否则将新的第一哈希值写入存储主机。
本发明实施例中,当需要计算数据段第一哈希值时,先判断哪些数据段的过期标志位被设置,然后更新对应数据段的第一哈希值,对于哪些标志位没有被设置的数据段,可以保证第一哈希值是最新的,不需要更新第一哈希值,然后根据所有数据段的第一哈希值计算出整个文件的哈希值。
在新的第一哈希值写入存储主机前,需要先判断在该数据段进行第一哈希值计算期间是否有写请求修改该数据段。
具体的,将标志位在内存中设置为0,先不更新到存储主机,然后计算第一哈希值,再判断内存中的标志位是否有被设置修改,如果被设置修改,则表示新的第一哈希值计算期间有写请求修改该数据段,则该第一哈希值还是过期的,没必要写入存储主机。
进一步的,所述第一哈希值与标志位采用额外新建文件进行保存。
此外,根据上述所述一种分布式存储多副本快速校验一致性的方法,本发明还提供了一种存储架构,所述存储架构采用控制主机-存储主机的处理架构。
所述控制主机中构建有虚拟磁盘,并用于管理虚拟磁盘的生命周期,完成数据的接收、缓存、转发功能;
所述存储主机由多个存储介质组成,用于冗余数据的存储;分布式存储系统中,数据最终的存放地点,将存储资源抽象成多个存储组件,每个组件由大型的稀疏文件链组成。
所述存储架构中存储有计算机程序,该计算机程序被控制主机执行时实现上述任一项所述的分布式存储多副本快速校验一致性的方法的步骤。
综上所述,本发明公开了一种分布式存储多副本快速校验一致性的方法及存储架构,采用控制主机-存储主机的处理架构,包括:预先将存储的文件均匀划分为若干数据段,每个数据段分别设置有单独对应的第一哈希值,且设置有用于表示对应第一哈希值是否过期的标志位;当接收到写请求时,根据写请求的偏移量和长度,计算出对应的标志位,并将所述标志位设置为过期;筛选出过期的标志位,更新所述标志位对应的第一哈希值后,根据各数据段的第一哈希值计算出整个文件的第二哈希值。本发明提供一种分布式存储多副本快速校验一致性的方法及存储架构,通过把一个大文件划分为若干数据段,分数据段计算文件的哈希值,再通过各个数据段的哈希值来计算整个文件的哈希值;通过上述方法,只需记录哪些数据段被修改,则更新对应数据段的哈希值即可,避免了校验一致性时需读取整个文件的数据,从而大大提高一致性校检速度,降低了存储主机带宽的消耗;并且分数据段计算哈希值,在系统空闲时可更容易的实现并发计算,大大加快了数据校验的速度。
应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。