1.本发明属于区块链技术领域和分布式存储领域,特别涉及分布式存储的管理方案,以及将元数据与数据共同存储的相关技术,即一种元数据与数据共同存储的分布式存储系统。
背景技术:
2.分布式存储系统可以将完整的数据分成多个部分分别存储在物理上分散的多个存储节点上,通过对这些节点进行统一的管理即可完成数据的存储和访问。元数据是一个分布式存储系统的关键所在,元数据主要存储的是分布式存储中各个文件的位置信息,通过访问元数据服务器才可以确定具体文件的位置,从而对文件进行写入以及访问操作,如果元数据服务器出现故障或者被人为攻陷,则整个分布式存储系统将会瘫痪,目前的分布式系统的元数据的管理方案主要有以下三种类型:1、集中式元数据管理模型:集中式是指通过元数据服务器对所有访问请问和数据进行集中管理,客户端只有通过元服务器的寻址才能获得所需的数据,这种元数据管理模式在实现思路上非常简单,有利于系统的后期扩展,因而在分布式系统应用初期有着广泛应用。但随着存储节点的增加,元服务器将逐步成为系统性能的瓶颈,并且很难解决元服务器的单点故障问题,因而在可靠性上有较大缺陷。集中式的分布式存储系统的管理模型如图1(a)所示,在这种元数据管理模式下,一旦元数据服务器遭到攻击,则整个存储系统将会有问题。
3.2、分布式元数据管理模型其基本思路是采用一个分布式计算机集群来代替元服务器,解决了单点故障和性能瓶颈问题。在元服务器集群中,各节点通过内部的数据同步机制来保证数据的一致性。 然而这种同步会带来较大的性能开销,并且存在由于同步出错导致数据不一致的风险,对于大规模分布式存储系统而言,这些问题表现得更加明显。如图1(b)所示为分布式元数据管理模型示意图。对于这种元数据管理模式,其元数据的数据同步将会消耗大量资源,且如果管理元数据节点的集群系统出现问题,整个分布式存储系统将会崩溃。
4.3、无元数据单独管理模型在这种模型,数据还是有元数据(例如哈希),只是元数据和数据存在一起,因为元数据并不单独存证,有的时候这称为“无元数据模型”。这种模型是为解决元数据模型被攻击而提出来。它将数据拆分后存储到不同的节点上,由哈希算法确定各部分数据的存储位置,数据的访问同样需要经过哈希算法来寻址,因而系统内部会存在较多的表单和缓存,这种基于哈希计算的存储模式复杂度极高,增加了系统维护难度。
5.因此,需要设计一种元数据与数据共同存储的分布式存储系统及方法,以保证元数据服务器不被攻破,从而保证数据的安全性。
技术实现要素:
6.本发明为了解决现有技术存在的一项或多项技术问题,创造性的提供一种元数据与数据共同存储的分布式存储系统,以保证元数据服务器不被攻破,从而保证数据的安全性。
7.本发明的目的在于提供一种元数据与数据共同存储的分布式存储系统,采用4层的分层架构,包括:物理层、元数块层、共识层以及微元数据层,所述微元数据层存储微元数据,所述共识层用于提供共识机制,保证所述微元数据的同步共识过程,所述共识层主要向上提供共识服务,以供所述微元数据层调用,所述微元数据通过所述共识层提供的共识服务后可以进行数据的写入以及修改操作,由于采用并行拜占庭容错算法,可以同时修改多个文件,且共识速度优于其他的共识算法,所述分布式存储系统仅有多个数据节点,没有元数据服务器,所述微元数据层、所述共识层以及所述元数块层这3层的所有数据都采用分布式的存储方法存储在各个所述数据节点中,从而元数据与数据共同存储的方案使得分布式存储系统几乎无法被攻破,大大保证了数据存储的安全性;所述物理层包括所述分布式存储系统所实施的分布式存储方法的所有物理节点,即服务器节点,数据、所述元数块层、所述共识层以及所述微元数据层位于所述物理层以上,都运行在所述服务器节点以上,在所述服务器节点之外不再提供专门的存储元数据的服务器。
8.优选的,所述微元数据包括所述微元数据层仅存储的某些数据块的位置,只包含一微元数据或者多微元数据,所述微元数据安全性性和可靠性加固,包括:(1)将所述微元数据使用任何适用的加密算法均进行加密;(2)在多微元数据环境下,所述微元数据存储同样信息或是重叠信息;(3)在多微元数据环境下,所述微元数据需要共识机制实施共识,如果所述微元数据存储同样信息,所有所述微元数据使用可以接受的共识机制协议;(4)在多微元数据环境下,所述微元数据需要共识机制实施共识,如果所述微元数据存储不同信息,一组微元数据保护同样部分信息的,使用可以接受的共识机制协议;(5)对于一个信息包,相关的元数据需要进行共识;(6)采用更复杂架构,所述复杂架构都是简单方案组合而成。
9.优选的,所述微元数据的数据结构仅包含文件的某一分块的位置信息,微元数据的写入以及修改需要通过共识层的共识算法,通过每一台机器或者部分机器进行共识之后进行数据的修改以及写入;微元数据的位置索引信息仅包含该文件的某一数据块的具体位置即可,例如如果文件被分为了5个数据块,则微元数据的位置信息仅需包含1到5数据块的任一数据块的位置信息即可,通过任一数据块都可读取到完整的数据,其数据结构将会是双向链表的或双向树结构。
10.优选的,所述元数块层内包含多个元数块,每个元数块内具有元数据和数据,一个元数块将元数据和数据存在一起,并且使用:(1)加密算法将元数块加密;(2)新安全协议来加固元数块块的安全性,保护元数块的安全。不同元数块内的元数据可以使用不同方案加固元数块的安全性。
11.(3)可以使用任何冗余容错架构维持存储协议的决定结构存储。
12.(4)元数块体积固定,多个元数块可以组成一个大元数块,多个大元数块可以组成一个大大元数块,这样多种固定体积的元数据可以使用。
13.(5)元数块,大元数块,大大元数块,以及后面更大体积的元数块,在这些不同体积的元数块的组织、架构、算法上使用相同或不同的数据结构、组织方式、架构、算法。
14.优选的,所述元数块数据结构和算法:元数块存储分块数据以及各个分块数据的元数据信息,所述元数块采用五种存储方案中的任意一种,包括:(1)单向指向:元数块使用单链接方式连接,最后一个元数块指向第一块,成为环状,增加可靠性;(2)双向指向:数据的组织形式采用双向链表的形式,数据文件被分为了多块数据块,每一块数据块由该分块的元数据和分块数据合并组成,元数据中采用双向链表的结构,指向该分块的下一块以及上一块的分块,其中每个分块元数据信息的内容包括,分片数,是否乱序存储,分片的次序数组,以及上一块数据以及下一块数据的位置信息;(3)树结构:元数块的组织形式采用双向树形结构的形式,数据文件被分为了多块数据块,每一块数据块由该分块的元数据和分块数据合并组成,元数据中采用双向树形的结构,除根分块外,每一个分块都指向该分块的左子树右子树以及父节点,其中每个分块元数据信息的内容包括,分片数,是否乱序存储,分片的次序数组,以及左子树数据、右子树数据和父节点数据的位置信息,其中可以采用2叉树、2-3树,3叉树,b树, b+树的树数据结构,树连接是单方向的,或是双方向的,或是多方向的;在每一级,采用单方向或是多方向的连接;(4)哈希方法:使用哈希算法,决定下一元数块存在哪里,所述元数据包含哈希信息,经过哈希信息,就可以找到下一个元数块,元数块2的物理地址由元数块1的数据经过哈希后映射得到,依此类推,形成一个哈希链条,在每一元数块内,每个元数据可以指向前面的元数据块,或是可以指向前面以及后面的元数块;或者第1块指向前面2块,往后指向后面2块;或是前面指向n 块,后面也指向m 块,其中n和m是相同或不同的,对于需要多向前查询的应用中,n》 m,需要向后面查询的应用中,n《m;或者采取双向存储哈希地址,在双向存储哈希地址方式,最后一元数块还可以指向第一元数块,产生环图;或者,双向存储方式可以和前面指向前面多n块,和指向后面多m块,n 和m可以相同或是不同;(5)混合模型:方式(1)-方式(4)混合一起在一个文件或者一个文件的不同层中使用。
15.优选的,所述共识层采用的共识机制包括:所有参与的节点参与共识投票,在有重叠环境下,需要不同共识机制,只有相关的节点参与共识;所述共识层使用多种不同共识机制,包括cbft并行拜占庭容错算法或pbft。
16.优选的,所述分块数据采用新数据结构、混乱机制以及层层加密算法进行加密,包括:加密后再分片后再加密;或者分片后实施混乱机制;其中分片数量为该分块数据进行再次分片的的分片数量,采用这种形式的数据结构,元数据信息也是该方案的元数据信息,在微元数据中可以仅存储一块分块数据的位置信息,就可以读取以及修改整个文件的数据文件信息优选的,所述分布式存储系统包括四种查询算法以查询数据,所述四种查询算法
包括:单向指向:元数块的数据结构采用单向指向方式进行组织时,微元数据层需要存储元数块1,即最开始位置的元数块的位置,找到元数块1的位置后即可读取数据,具体步骤包括:(1)客户端发起查询请求;(2)微元数据层反馈第一块元数据位置;(3)根据单向链表找到其他数据块位置;(4)每个元数块进行解密操作;(5)按顺序将数据块组织成最终数据反馈客户端;双向指向:元数块的数据结构采用双向指向方式进行组织时,微元数据层可存储任意一块元数块的位置,找到其位置后即可读取数据,具体步骤包括:(1)客户端发起查询请求;(2)微元数据层反馈存储的元数块位置;(3)判断元数块层数,若为0代表为第一块元数块,此时按照单向指向的方式进行查询,若不为第一块元数块,则同时从左右两个方向查找元数块;(4)从左边查找元数块,直到找到的元数块的左节点为空为止,从右边查找元数块,直到找到的元数块的右节点为空为止;(5)每个元数块进行解密操作;(6)按顺序将数据块组织成最终数据反馈客户端。
17.树结构:对于树结构形式组织的元数块,首先要找到其根节点,然后需要通过树的具体组织形式来决定查询算法,所述树结构形式采用层序遍历的形式存储数据块,先确定其根节点,然后根据根节点进行层序遍历找到所有节点,之后的算法与单向指向方法相同;哈希结构:对于哈希结构形式组织的元数块,微元数据层需要存储元数块1,即最开始位置的元数块的位置,找到元数块1的位置后即可按照哈希值找到第二个元数块的位置,然后根据第二个元数块的位置找到第三块,依此类推找到所有的元数块,得出最终数据。
18.优选的,所述元数块的存储方法包括:元数块层用于存储数据的元数据以及数据信息,将元数据与数据共同存储打包进入元数块内,在元数块内部采用密中密,片分片的数据组织形式,元数块的存储使用了块中块的方案,即大块包含中块,中块包含小块,数据首先分解成多个元数块,元数块内部再重新分片。
19.优选的,所述元数块的存储方法还包括:在元数块内的元数据再度加密,可以采用密中密片分片的方式进行再次加密,使得元数块内的元数据的安全性更高,加密方式使用数据乱序加密以及数据重组的方式;在元数块内的数据再度加密,与元数块内的元数据的加密方式类似,可以采用数据乱序加密,以及数据重组等方式将数据再次加密,数据与元数据可以采用不同的加密方式。
20.本发明的有益效果:不论是有元数据模型或是无元数据模型,主要的设计目的在于功能和性能,例如在云平台或是大数据平台上的数据存储。在区块链上的应用,功能和性能固然重要,安全性更加重要,而数据存储的方式也大不相同。针对目前存在的元数据管理模型的各种痛点,本
实施例提出了一种基于区块链技术的元数据管理方案:1、该方案将元数据与数据放在一起存储(称为“元数块”),再加上使用加密和哈希技术来维持不同元数块的关系,层层加密来保护,不同于传统数据和元数据存储一起的方式。这样的层层加固的机制大大保护系统的安全性,而又维持系统的完备性和可靠性。
21.2、一个大型文件可能需要许多元数块来存储,几个(小)元数块组合一起成为中开元数,而几个中元数块可以组成一个大元数块,而大元数块组合一起成为大大元数块,以此类推。在每一层,元数块体积一样方面处理,元数块的关系可以使用加密和哈希算法来安全加固,这就和传统无元数据模型方法不同。
22.3、由于存储需要至少一个地址,地址对应该实施例方法中的“微元数据”,其他元数据信息都和数据都放在“元数块”内,这样绝大部分信息都放在元数块内,微元数据和元数块同样也被加密。
23.4、元数据和数据放在一起,有效避免了集中式元数据管理模型和分布式元数据管理模型存在的性能瓶颈问题,在解决性能瓶颈的基础上,也避免了无元数据管理模型的系统开销过大以及存储模式复杂度极高系统维护难度极大的问题。由于系统结构,该存储机制可以直接支持区块链运行,并且该机制仍然可以和传统机制融合,使存储系统更加安全高效。
24.根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。
附图说明
25.后文将参照附图以示例性而非限制性的方式详细描述本发明的一些具体实施例。附图中相同的附图标记标示了相同或类似的部件或部分。本领域技术人员应该理解,这些附图未必是按比例绘制的。本发明的目标及特征考虑到如下结合附图的描述将更加明显,附图中:图1(a)为根据现有技术的集中式的分布式存储系统的管理模型图;;图1(b)为根据现有技术的分布式存储系统的管理模型图;图2为根据本发明的优选实施例的系统架构示意图;图3为根据本发明的优选实施例的微元数据结构图;图4为根据本发明的优选实施例的元数据单向指向存储架构示意图;图5为根据本发明优选实施例的元数据双向指向存储架构示意图;图6为根据本发明优选实施例的元数据双向树结构存储架构示意图;图7为根据本发明优选实施例的二叉树元数据块的组织架构示意图;图8为根据本发明优选实施例的元数据哈希方法单向存储架构示意图;图9为根据本发明优选实施例的双向存储哈希架构示意图;图10为根据本发明优选实施例的混合模型存储架构示意图;图11为根据本发明优选实施例的cbft并行拜占庭容错算法原理示意图;图12为根据本发明优选实施例的元数块层层加密协议原理示意图;图13为根据本发明优选实施例的元数块块中快存储原理示意图;图14为根据本发明优选实施例的元数块细节存储方式中数据乱序加密流程示意
图;图15为根据本发明优选实施例的数据重组加密流程示意图。
具体实施方式
26.为了使得本发明能够针对其发明要点更加明显易懂,下面将结合附图和实例对本发明作进一步的说明。在下面的描述中阐述了很多细节和具体实例,提供这些实例是为了能够更透彻地理解本发明,并且能够将本发明完整形象地传达给本领域的技术人员。虽然本发明能够以很多不同于此描述的其它方式实施,但是本领域技术人员可以在不违背本发明内涵的情况下做相应的推广,因此本发明不受下面公开的具体实例及具体附图所限制。
27.在下面的描述中阐述了很多细节和具体实例,提供这些实例是为了能够更透彻地理解本发明,并且能够将本发明完整形象地传达给本领域的技术人员。虽然本发明能够以很多不同于此描述的其它方式实施,但是本领域技术人员可以在不违背本发明内涵的情况下做相应的推广,因此本发明不受下面公开的具体实例及具体附图所限制。
28.本实施例的元数据与数据共同存储的分布式存储系统,以保证元数据服务器不被攻破,从而保证数据的安全性。
[0029]“块”在存储领域称为block(块), brick(砖),或是page(页); 在区块链领域这称为“块”或是“区块”。但是在存储领域,“块”是为存储出发的概念和区块链的块概念不同;在区块链领域“块”是为支持哈希和共识的概念,和存储无直接关系。这里元数块是存储领域的“块”,但是元数块里面存的信息是区块链系统内的“块”信息。区块链上的“块”使用哈希来保障不能数据更改性;这里的存储“元数块”,使用层层加密以来多层次保护(见第3节)。这样存储块的安全和保密性大大提高,而支持这些存储块内区块链的块信息的安全性。
[0030]
同样,传统存储块的体积大小是固定的,而区块链内块体积是不固定的,可以因为有不同数量的交易数据而有不同体积。这里的元数块有固定体积,而且可以有大块、中块、小块,以及以后延伸例如“大大块”,“大大大块”,以及后面更大的块。具体块的体积由服务器的性能和应用决定。多种元数块的数据结构和算法中,不同体积的元数块可以使用不同的元数块的数据结构和算法。
[0031]
参见图2,本发明的目的在于提供一种元数据与数据共同存储的分布式存储系统,采用4层的分层架构,包括:物理层、元数块层、共识层以及微元数据层,所述微元数据层存储微元数据,所述共识层用于提供共识机制,保证所述微元数据的同步共识过程,所述共识层主要向上提供共识服务,以供所述微元数据层调用,所述微元数据通过所述共识层提供的共识服务后可以进行数据的写入以及修改操作,由于采用并行拜占庭容错算法,可以同时修改多个文件,且共识速度优于其他的共识算法,所述分布式存储系统仅有多个数据节点,没有元数据服务器,所述微元数据层、所述共识层以及所述元数块层这3层的所有数据都采用分布式的存储方法存储在各个所述数据节点中,从而元数据与数据共同存储的方案使得分布式存储系统几乎无法被攻破,大大保证了数据存储的安全性;所述物理层包括所述分布式存储系统所实施的分布式存储方法的所有物理节点,即服务器节点,数据、所述元数块层、所述共识层以及所述微元数据层位于所述物理层以上,都运行在所述服务器节点以上,在所述服务器节点之外不再提供专门的存储元数据的服务器,由于没有单独的元数据服务器,对于数
据的存储以及修改和访问几乎都是没有瓶颈限制的,可以极大的扩展机器数量。
[0032]
优选的,所述微元数据包括所述微元数据层仅存储的某些数据块的位置,只包含一微元数据或者多微元数据,所述微元数据安全性性和可靠性加固,包括:(1)将所述微元数据使用任何适用的加密算法均进行加密;(2)在多微元数据环境下,所述微元数据存储同样信息或是重叠信息;(3)在多微元数据环境下,所述微元数据需要共识机制实施共识,如果所述微元数据存储同样信息,所有所述微元数据使用可以接受的共识机制协议,例如pbft或是cbft或是其他算法;(4)在多微元数据环境下,所述微元数据需要共识机制实施共识,如果所述微元数据存储不同信息,一组微元数据保护同样部分信息的,使用可以接受的共识机制协议,例如pbft或是cbft或是其他共识协议。例如一共有3个微元数据,信息重叠, 第1元数据包含信息(a,b),第2元数据包含信息(b,c),第3元数据包含信息(a,c)。这样第1和第2,第2和第3,第1和第3需要分别共识信息b,c,a。所有a, b, c信息在不同节点存2次(重叠2次)。
[0033]
(5)可以具有其他组合,例如重叠3次,第1元数据包含(a,b,c),第2元数据(b, c, d),第3元数据包含(c,d,e),第4元数据包含(d,e,f),第5元数据包含 (e,f,g),第6元数据包含 (f,g,h),第7元数据包含 (g,h,i),第8元数据包含 (h,i,a),第9元数据包含 (i,a,b)。每个信息保存3次。对于一个信息包,相关的元数据需要进行共识。
[0034]
(6)可以具有更复杂重叠,例如部分采取重叠(2),部分采取重叠(3)方式;还可以有更复杂的组合。由于组合太多,只列举前面组合方式,但是复杂架构都是简单方案组合而成。
[0035]
(7)上述重叠方法是一种冗余容错机制,由于共识机制和加密算法一起使用,不同于传统数据结构和算法。
[0036]
优选的,所述微元数据的数据结构包括:传统的元数据包括各个数据块的存储位置、文件大小、历史数据、资源查找、文件记录等信息,数据量较为庞大,当数据量变大时,其查询速度会非常缓慢,造成数据的访问以及写入速度降低,且元数据服务器一旦遭到攻击,则整个分布式存储系统将会瘫痪。微元数据层仅包含文件的某一分块的位置信息,其数据结构如图3所示。
[0037]
由于微元数据的数据量非常小,即便在数据量很大的情况下,其查询速度还是很快,微元数据存储在系统的每一台机器上,保证其不会发生故障,微元数据的写入以及修改需要通过共识层的共识算法,通过每一台机器或者部分机器进行共识之后进行数据的修改以及写入。
[0038]
微元数据的位置索引信息仅包含该文件的某一数据块的具体位置即可,例如如果文件被分为了5个数据块,则微元数据的位置信息仅需包含1到5数据块的任一数据块的位置信息即可,通过任一数据块都可读取到完整的数据,其数据结构将会是双向链表的或双向树结构。
[0039]
优选的,所述元数块层内包含多个元数块,每个元数块内具有元数据和数据,一个元数块将元数据和数据存在一起,类似传统元数据和数据,这里称这块为“元数块”(因为包含元数据和数据),并且使用:(1)加密算法将元数块加密;
(2)新安全协议来加固元数块块的安全性,保护元数块的安全。不同元数块内的元数据可以使用不同方案加固元数块的安全性。
[0040]
(3)可以使用任何冗余容错架构维持存储协议的决定结构存储。
[0041]
(4)元数块体积固定,多个元数块可以组成一个大元数块,多个大元数块可以组成一个大大元数块,这样多种固定体积的元数据可以使用。
[0042]
(5)元数块,大元数块,大大元数块,以及后面更大体积的元数块,在这些不同体积的元数块的组织、架构、算法上都可以使用本专利讨论的数据结构、组织方式、架构、算法。在每一层(例如元数块层,或是大元数块层,或是大大元数块层),可以使用在本发明讨论的数据结构、组织方式、架构、算法。在不同层,可以使用不同的数据结构、组织方式、架构、算法,增加破解者的难度。
[0043]
优选的,所述元数块数据结构和算法:元数块存储分块数据以及各个分块数据的元数据信息,下面详细描述了五种具体的存储方案,在本发明中所有的分块数据的存储方案都可以采用其中的任意一种,即采用了块中块的方法,首先进行一次数据分块,对于每一个分块数据,再采用分片重组方案进行再次分块,最终数据采用块中块的组织形式,数据文件首先进行初次分块,每一个分块采用加密分片乱序存储方案。
[0044]
方案一:单向指向元数块使用单链接方式连接,简单容易实现,但是可靠性比较差,如图4所示。
[0045]
由于元数块、元数据、和数据都经过加密,攻击者即使攻击到第一块元数块,还需要破解数据加密才能获得数据,而元数据也经过加密,攻击者必须破解后,才能拿到下一个元数块的地址信息。而即使转到第2个元数块,还需要继续破解那里的元数据加密和数据加密,层层加密,严格保护数据。
[0046]
最后一个元数块可以指向第一块,成为环状,增加可靠性。
[0047]
方案二:双向指向数据的组织形式采用双向链表的形式,如图5所示:数据文件被分为了5块数据块,每一块数据块由该分块的元数据和分块数据合并组成,元数据中采用双向链表的结构,指向该分块的下一块以及上一块的分块,其中每个分块元数据信息的内容包括,分片数,是否乱序存储,分片的次序数组,以及上一块数据以及下一块数据的位置信息。
[0048]
由于元数块、元数据、和数据都被加密,攻击者即使攻击到第一块元数块,还需要破解数据加密才能拿到数据,而元数据也经过加密,攻击者必须破解后,才能拿到下一个元数块的地址信息。
[0049]
而即使转到第2个元数块,还需要继续破解那里的元数据加密和数据加密,层层加密,严格保护数据。
[0050]
方案三:树结构元数块的组织形式采用双向树形结构的形式,如图6所示。
[0051]
数据文件被分为了5块数据块,每一块数据块由该分块的元数据和分块数据合并组成,元数据中采用双向树形的结构,每一个分块(除根分块外)都指向该分块的左子树右子树以及父节点,其中每个分块元数据信息的内容包括,分片数,是否乱序存储,分片的次
序数组,以及左子树数据、右子树数据和父节点数据的位置信息,其元数据形式如图7所示。
[0052]
2叉树可以是其他树结构,例如2-3树,3叉树,b树, b+树等,多种树数据结构都可以使用。树连接可以是单方向的,或是双方向的,或是多方向的。例如在每一级,都可以还有单方向或是多方向的连接,例如x 树架构。
[0053]
方式四:哈希方法使用哈希算法,决定下一元数块存在哪里。元数据就是包含哈希信息,经过哈希信息,就可以找到下一元数块,如图8所示。
[0054]
元数块2的物理地址由元数块1的数据经过哈希后映射得到,依此类推,形成一个哈希链条。在每一元数块内,每个元数据可以指向前面的元数据块,或是可以指向前面以及后面的元数块。假设一共有10个元数块,第1块前面指向第2块,而往后指向第10块;第2块前面指向第3块,而往后指向第1块;以此类推。这样就是合并前面3个方式和这个方式。
[0055]
作为另一种优选的实施方式,还可以第1块指向前面2块,往后指向后面2块等。或是前面指向n 块,后面也指向m 块。一般情形下,n和m是相同,但可以根据不同应用需求而不同。例如有的应用需要多向前查询,这样n》 m;而在一些应用需要多向后面查询,这样n《m.当然,这方式可以采取双向存储哈希地址,如图9所示。
[0056]
在双向存储哈希地址方式,最后一元数块还可以指向第一元数块,产生环图。或者,双向存储方式可以和前面指向前面多(n)块,和指向后面多(m)块,n 和m可以相同或是不同,以及其他方式混合一起使用。
[0057]
方式五:混合模型前面四种方式可以混合一起使用。例如在中型文件,有多个中元数块,每个元数块内有多个小元数块。第一层(中元数块)使用方式2连接,但是从每个中元数块内又有多个(小)元数据块,这些小元数块使用方式4连接。使用该复杂混合模型,会使攻击者感觉非常困难。如图10所示,上层使用方式二,下层使用方式四中的双向存储哈希地址的方式。
[0058]
作为优选的实施方式,共识层采用的共识机制包括:在多微元数据情形下,需要共识。所有参与的节点参与共识投票,在有重叠环境下,需要不同共识机制,只有相关的节点参与共识。例如有3个微元数据,信息2重叠, 第1元数据包含信息(a,b),第2元数据包含信息(b,c),第3元数据包含信息(a,c)。这样第1和第2,第2和第3,第1和第3需要分别共识信息b,c,a。所有a, b, c信息在不同节点存2次(重叠2次)。这样,第1和第2需要共识b,第2和第3需要共识c,第1和第3需要共识a。
[0059]
可以使用多种不同共识机制,包括cbft并行拜占庭容错算法,或是pbft,或是其他方法,cbft并行拜占庭容错算法的共识流程如图11所示。cbft算法有四个阶段:block determination、pre-prepare、prepare 和 commit,后三个阶段与pbft算法的三个阶段类似。cbft的一个重要优势是并发性,每个块可以与其他块并发的方式投票及建块,从而大大的提高共识速度。cbft另一个重要特点就是可以在提交阶段检测受损节点,可以在最后阶段广播消息来识别叛徒节点。步骤包含:交易级别的确认和投票、建块、块验证、块确认。
[0060]
如图12所示,以上方式在加密上需要新数据结构、混乱机制,以及层层加密算法:
·
加密后再分片,后再加密
·
分片后实施混乱机制
其中分片数量为该分块数据进行再次分片的的分片数量,采用这种形式的数据结构,元数据信息也是该方案的元数据信息,在微元数据中可以仅存储一块分块数据的位置信息,就可以读取以及修改整个文件的数据文件信息。树形结构有利于数据的排序以及查找,可以大大减少数据查询的速度。
[0061]
作为优选的实施方式,本专利描述的存储方案需要有相应的查询算法查询数据,对于四种不同的元数块的数据结构以及算法,不同的方式有不同的加密方式,具体算法如下:1、单向指向元数块的数据结构采用单向指向方式进行组织时,微元数据层需要存储元数块1(最开始位置的元数块)的位置,找到元数块1的位置后即可读取数据,具体步骤如下:(1)客户端发起查询请求;(2)微元数据层反馈第一块元数据位置;(3)根据单向链表找到其他数据块位置;(4)每个元数块进行解密操作;(5)按顺序将数据块组织成最终数据反馈客户端;2、双向指向元数块的数据结构采用双向指向方式进行组织时,微元数据层可存储任意一块元数块的位置,找到其位置后即可读取数据,具体步骤如下:(1)客户端发起查询请求;(2)微元数据层反馈存储的元数块位置;(3)判断元数块层数,若为0代表为第一块元数块,此时按照单向指向的方式进行查询,若不为第一块元数块,则同时从左右两个方向查找元数块;(4)从左边查找元数块,直到找到的元数块的左节点为空为止,从右边查找元数块,直到找到的元数块的右节点为空为止;(5)每个元数块进行解密操作;(6)按顺序将数据块组织成最终数据反馈客户端。
[0062]
3、树结构对于树结构形式组织的元数块,首先要找到其根节点,然后需要通过树的具体组织形式来决定查询算法,例如树采用层序遍历的形式存储数据块,则应先确定其根节点,然后根据根节点进行层序遍历找到所有节点,之后的算法与单向指向方法相同。
[0063]
4、哈希结构对于哈希结构形式组织的元数块,微元数据层需要存储元数块1(最开始位置的元数块)的位置,找到元数块1的位置后即可按照哈希值找到第二个元数块的位置,然后根据第二个元数块的位置找到第三块,依此类推找到所有的元数块,得出最终数据。
[0064]
作为优选实施方式,元数块存储方案元数块层用于存储数据的元数据以及数据信息,将元数据与数据共同存储打包进入元数块内,在元数块内部采用密中密,片分片的数据组织形式。
[0065]
元数块的存储使用了块中块的方案,即大块包含中块,中块包含小块,数据首先分解成多个元数块,元数块内部再重新分片,其结构如图13所示。
[0066]
元数块细节存储方式:在元数块内的元数据再度加密,可以采用密中密片分片的方式进行再次加密,使得元数块内的元数据的安全性更高。具体的加密方式可以使用数据乱序加密,以及数据重组等方式,如图14所示为数据乱序加密的流程。
[0067]
在元数块内的数据再度加密,与元数块内的元数据的加密方式类似,可以采用数据乱序加密,以及数据重组等方式将数据再次加密,数据与元数据可以采用不同的加密方式,这样保证数据的绝对安全性,即使破解了元数据也无法破解数据,如图15所示为数据重组的加密过程。
[0068]
本实施例中不论是有元数据模型或是无元数据模型,主要的设计目的在于功能和性能,例如在云平台或是大数据平台上的数据存储。在区块链上的应用,功能和性能固然重要,安全性更加重要,而数据存储的方式也大不相同。针对目前存在的元数据管理模型的各种痛点,本实施例提出了一种基于区块链技术的元数据管理方案:1、该方案将元数据与数据放在一起存储(称为“元数块”),再加上使用加密和哈希技术来维持不同元数块的关系,层层加密来保护,不同于传统数据和元数据存储一起的方式。这样的层层加固的机制大大保护系统的安全性,而又维持系统的完备性和可靠性。
[0069]
2、一个大型文件可能需要许多元数块来存储,几个(小)元数块组合一起成为中开元数,而几个中元数块可以组成一个大元数块,而大元数块组合一起成为大大元数块,以此类推。在每一层,元数块体积一样方面处理,元数块的关系可以使用加密和哈希算法来安全加固,这就和传统无元数据模型方法不同。
[0070]
3、由于存储需要至少一个地址,地址对应该实施例方法中的“微元数据”,其他元数据信息都和数据都放在“元数块”内,这样绝大部分信息都放在元数块内,微元数据和元数块同样也被加密。
[0071]
4、元数据和数据放在一起,有效避免了集中式元数据管理模型和分布式元数据管理模型存在的性能瓶颈问题,在解决性能瓶颈的基础上,也避免了无元数据管理模型的系统开销过大以及存储模式复杂度极高系统维护难度极大的问题。由于系统结构,该存储机制可以直接支持区块链运行,并且该机制仍然可以和传统机制融合,使存储系统更加安全高效。
[0072]
虽然本发明已经参考特定的说明性实施例进行了描述,但是不会受到这些实施例的限定而仅仅受到附加权利要求的限定。本领域技术人员应当理解可以在不偏离本发明的保护范围和精神的情况下对本发明的实施例能够进行改动和修改。
技术特征:
1.一种元数据与数据共同存储的分布式存储系统,采用4层的分层架构,其特征在于包括:物理层、元数块层、共识层以及微元数据层,所述微元数据层存储微元数据,所述共识层用于提供共识机制,保证所述微元数据的同步共识过程,所述共识层主要向上提供共识服务,以供所述微元数据层调用,所述微元数据通过所述共识层提供的共识服务后可以进行数据的写入以及修改操作,由于采用并行拜占庭容错算法,可以同时修改多个文件,且共识速度优于其他的共识算法,所述分布式存储系统仅有多个数据节点,没有元数据服务器,所述微元数据层、所述共识层以及所述元数块层这3层的所有数据都采用分布式的存储方法存储在各个所述数据节点中,从而元数据与数据共同存储的方案使得分布式存储系统几乎无法被攻破,大大保证了数据存储的安全性;所述物理层包括所述分布式存储系统所实施的分布式存储方法的所有物理节点,即服务器节点,数据、所述元数块层、所述共识层以及所述微元数据层位于所述物理层以上,都运行在所述服务器节点以上,在所述服务器节点之外不再提供专门的存储元数据的服务器。2.根据权利要求1所述的一种元数据与数据共同存储的分布式存储系统,其特征在于:所述微元数据包括所述微元数据层仅存储的某些数据块的位置,只包含一微元数据或者多微元数据,所述微元数据安全性性和可靠性加固,包括:(1)将所述微元数据使用任何适用的加密算法均进行加密;(2)在多微元数据环境下,所述微元数据存储同样信息或是重叠信息;(3)在多微元数据环境下,所述微元数据需要共识机制实施共识,如果所述微元数据存储同样信息,所有所述微元数据使用可以接受的共识机制协议;(4)在多微元数据环境下,所述微元数据需要共识机制实施共识,如果所述微元数据存储不同信息,一组微元数据保护同样部分信息的,使用可以接受的共识机制协议;(5)对于一个信息包,相关的元数据需要进行共识;(6)采用更复杂架构,所述复杂架构都是简单方案组合而成。3.根据权利要求1所述的一种元数据与数据共同存储的分布式存储系统,其特征在于:所述微元数据的数据结构仅包含文件的某一分块的位置信息,微元数据的写入以及修改需要通过共识层的共识算法,通过每一台机器或者部分机器进行共识之后进行数据的修改以及写入;微元数据的位置索引信息仅包含该文件的某一数据块的具体位置即可,例如如果文件被分为了5个数据块,则微元数据的位置信息仅需包含1到5数据块的任一数据块的位置信息即可,通过任一数据块都可读取到完整的数据,其数据结构将会是双向链表的或双向树结构。4.根据权利要求1所述的一种元数据与数据共同存储的分布式存储系统,其特征在于:所述元数块层内包含多个元数块,每个元数块内具有元数据和数据,一个元数块将元数据和数据存在一起,并且使用:(1)加密算法将元数块加密;(2)新安全协议来加固元数块块的安全性,保护元数块的安全。5.不同元数块内的元数据可以使用不同方案加固元数块的安全性;(3)可以使用任何冗余容错架构维持存储协议的决定结构存储;(4)元数块体积固定,多个元数块可以组成一个大元数块,多个大元数块可以组成一个
大大元数块,这样多种固定体积的元数据可以使用;(5)元数块,大元数块,大大元数块,以及后面更大体积的元数块,在这些不同体积的元数块的组织、架构、算法上使用相同或不同的数据结构、组织方式、架构、算法;根据权利要求4所述的一种元数据与数据共同存储的分布式存储系统,其特征在于:所述元数块数据结构和算法包括:元数块存储分块数据以及各个分块数据的元数据信息,所述元数块采用五种存储方案中的任意一种,包括:(1)单向指向:元数块使用单链接方式连接,最后一个元数块指向第一块,成为环状,增加可靠性;(2)双向指向:数据的组织形式采用双向链表的形式,数据文件被分为了多块数据块,每一块数据块由该分块的元数据和分块数据合并组成,元数据中采用双向链表的结构,指向该分块的下一块以及上一块的分块,其中每个分块元数据信息的内容包括,分片数,是否乱序存储,分片的次序数组,以及上一块数据以及下一块数据的位置信息;(3)树结构:元数块的组织形式采用双向树形结构的形式,数据文件被分为了多块数据块,每一块数据块由该分块的元数据和分块数据合并组成,元数据中采用双向树形的结构,除根分块外,每一个分块都指向该分块的左子树右子树以及父节点,其中每个分块元数据信息的内容包括,分片数,是否乱序存储,分片的次序数组,以及左子树数据、右子树数据和父节点数据的位置信息,其中可以采用2叉树、2-3树,3叉树,b树, b+树的树数据结构,树连接是单方向的,或是双方向的,或是多方向的;在每一级,采用单方向或是多方向的连接;(4)哈希方法:使用哈希算法,决定下一元数块存在哪里,所述元数据包含哈希信息,经过哈希信息,就可以找到下一个元数块,元数块2的物理地址由元数块1的数据经过哈希后映射得到,依此类推,形成一个哈希链条,在每一元数块内,每个元数据可以指向前面的元数据块,或是可以指向前面以及后面的元数块;或者第1块指向前面2块,往后指向后面2块;或是前面指向n 块,后面也指向m 块,其中n和m是相同或不同的,对于需要多向前查询的应用中,n> m,需要向后面查询的应用中,n<m;或者采取双向存储哈希地址,在双向存储哈希地址方式,最后一元数块还可以指向第一元数块,产生环图;或者,双向存储方式可以和前面指向前面多n块,和指向后面多m块,n 和m可以相同或是不同;(5)混合模型:方式(1)-方式(4)混合一起在一个文件或者一个文件的不同层中使用。6.根据权利要求1所述的一种元数据与数据共同存储的分布式存储系统,其特征在于:所述共识层采用的共识机制包括:所有参与的节点参与共识投票,在有重叠环境下,需要不同共识机制,只有相关的节点参与共识;所述共识层使用多种不同共识机制,包括cbft并行拜占庭容错算法或pbft。7.根据权利要求1所述的一种元数据与数据共同存储的分布式存储系统,其特征在于:所述分块数据采用新数据结构、混乱机制以及层层加密算法进行加密,包括:加密后再分片后再加密;或者分片后实施混乱机制;其中分片数量为该分块数据进行再次分片的的分片数量,采用这种形式的数据结构,元数据信息也是该方案的元数据信息,在微元数据中可以仅存储一块分块数据的位置信息,就可以读取以及修改整个文件的数据文件信息。8.根据权利要求1所述的一种元数据与数据共同存储的分布式存储系统,其特征在于所述分布式存储系统包括四种查询算法以查询数据,所述四种查询算法包括:单向指向:元数块的数据结构采用单向指向方式进行组织时,微元数据层需要存储元
数块1,即最开始位置的元数块的位置,找到元数块1的位置后即可读取数据,具体步骤包括:(1)客户端发起查询请求;(2)微元数据层反馈第一块元数据位置;(3)根据单向链表找到其他数据块位置;(4)每个元数块进行解密操作;(5)按顺序将数据块组织成最终数据反馈客户端;双向指向:元数块的数据结构采用双向指向方式进行组织时,微元数据层可存储任意一块元数块的位置,找到其位置后即可读取数据,具体步骤包括:(1)客户端发起查询请求;(2)微元数据层反馈存储的元数块位置;(3)判断元数块层数,若为0代表为第一块元数块,此时按照单向指向的方式进行查询,若不为第一块元数块,则同时从左右两个方向查找元数块;(4)从左边查找元数块,直到找到的元数块的左节点为空为止,从右边查找元数块,直到找到的元数块的右节点为空为止;(5)每个元数块进行解密操作;(6)按顺序将数据块组织成最终数据反馈客户端;树结构:对于树结构形式组织的元数块,首先要找到其根节点,然后需要通过树的具体组织形式来决定查询算法,所述树结构形式采用层序遍历的形式存储数据块,先确定其根节点,然后根据根节点进行层序遍历找到所有节点,之后的算法与单向指向方法相同;哈希结构:对于哈希结构形式组织的元数块,微元数据层需要存储元数块1,即最开始位置的元数块的位置,找到元数块1的位置后即可按照哈希值找到第二个元数块的位置,然后根据第二个元数块的位置找到第三块,依此类推找到所有的元数块,得出最终数据。9.根据权利要求8所述的一种元数据与数据共同存储的分布式存储系统,其特征在于所述元数块的存储方法包括:元数块层用于存储数据的元数据以及数据信息,将元数据与数据共同存储打包进入元数块内,在元数块内部采用密中密,片分片的数据组织形式,元数块的存储使用了块中块的方案,即大块包含中块,中块包含小块,数据首先分解成多个元数块,元数块内部再重新分片。10.根据权利要求9所述的一种元数据与数据共同存储的分布式存储系统,其特征在于所述元数块的存储方法还包括:在元数块内的元数据再度加密,可以采用密中密片分片的方式进行再次加密,使得元数块内的元数据的安全性更高,加密方式使用数据乱序加密以及数据重组的方式;在元数块内的数据再度加密,与元数块内的元数据的加密方式类似,可以采用数据乱序加密,以及数据重组等方式将数据再次加密,数据与元数据可以采用不同的加密方式。
技术总结
本发明提供一种元数据与数据共同存储的分布式存储系统,采用4层的分层架构,包括:物理层、元数块层、共识层及微元数据层,微元数据层存储微元数据,共识层用于提供共识机制,向上提供共识服务以供微元数据层调用,微元数据通过共识层共识服务后进行数据的写入及修改操作,采用并行拜占庭容错算法,可同时修改多个文件且共识速度快,分布式存储系统仅有多个数据节点,没有元数据服务器,微元数据层、共识层及元数块层这3层的所有数据都采用分布式的存储方法存储在各个数据节点中;物理层包括分布式存储系统所实施的分布式存储方法的所有物理节点,即服务器节点,数据、元数块层、共识层以及微元数据层位于物理层以上,都运行在服务器节点以上。务器节点以上。务器节点以上。
技术研发人员:蔡维德
受保护的技术使用者:天民(青岛)国际沙盒研究院有限公司
技术研发日:2021.08.04
技术公布日:2022/3/8