1.本发明属于区块链存储
技术领域:
:,特别涉及一种基于区块链技术的块存储系统及块存储方法。
背景技术:
::2.如图1所示,传统块存储,上层应用文件使用数据结构例如树分解为多逻辑块,然后映射到硬件块或物理块。图1为存储网络工业协会(storagenetworkingindustryassoication,snia)发布的报告中的图。该报告为该协会代表christianbandulet在2007年提供的,原文题目是“存储的演变:从块、文件、对象到对象存储系统”(thestorageevolution:fromblocks,filesandobjectstoobjectstoragesystems.)。报告中的一个主要思想是存储分逻辑层和物理层,而在逻辑层物理层都有映射机制,维持上面逻辑文件和下面物理块的关联。3.在映射时,可以使用分布式哈希表(distributedhashtable,dht)技术将数据块分布在不同存储服务器上。云平台系统通常存3个备份,预防存储服务器出问题。亚马逊云平台就是使用这样机制。一般在应用端或是逻辑层,不处理冗余问题,而由物理层来解决。例如许多云平台都自动备份3个拷贝。由于云平台使用大量低成本的存储服务器,一旦一些服务器出事,数据还有自动的备份可以回复。4.申请人2020年提出并申请授权的“块中块”相关设计-一种基于区块链技术的新型计算及存储架构”(申请号为:2020100849625)提出2个创新设计:块的体积固定(例如依照标准,或是应用系统决定);以及几个小块可以组合成中块,几个中块可以组合成大块,几个大块可以组合成大大块等,共同形成“块中块”的设计。此外在“一种基于区块链技术的元数据与数据共同储存的分布式存储方案”设计提出更复杂的安全技术,使系统更加安全;同时使用“一种基于密码学的分布式安全存储策略”(已授权)和“一种基于区块链技术的加密分片重组数据存储方案”的方案来加密,由于上面是一组技术,可以使用混合技术来解决存储问题;2020年在“一种基于区块链技术的加密块中块存储的分布式存储方案”提出融合元数据和数据一起的块存储机制。5.然而以前面五件专利上,还有两个关键问题没有解决:一是在区块链系统内如何动态维持“块中块”的结构,并且是在逻辑层和物理层都需要维持这样的关联。在逻辑层,由于需要维持区块链高性能和功能作业,特别是交易完备性以及监管性需要维持该关联;在物理层也需要维持“块中块”的结构,这是由于物理层需要执行逻辑层的指令,逻辑层通顺,如果物理层没有维持这样块中块的架构,区块链高性能不能维持。传统存储系统由于自主性非常高,例如软件定义存储,在物理层的自主性更高更灵活,但是这样的灵活性却不会维持上层块中块的结构,这样物理存储层就不能达到支持上层的区块链高性能的目的。第二个问题是不论在逻辑层还是物理层,块中块还需要冗余机制,这样一旦系统出问题,块中块的结构还是可以被维持。6.由于区块链数据是由块组成,和传统文件不同。但是现有的存储结构并不适用与区块链数据的查询写入等操作,需要从底层进行数据存储机制的修改。因此,需要设计一种新的基于区块链技术的块存储系统及块存储方法,从底层设计新的基于区块链技术的存储机制。技术实现要素:7.本发明为了解决现有技术存在的一项或多项技术问题,创造性的提供基于区块链技术的块存储系统和方法。8.本发明的目的在于提供一种基于区块链技术的块存储系统,所述块存储一直动态维持块中块架构,所述块中块架构中,几个区块链交易块组成一个小块,几个所述小块组成中块,几个所述中块组成大块,几个所述大块组成大大块,在所述区块链的每一层,块的体积固定,所述基于区块链技术的块存储系统包括块与块的连接结构子模块,块中块的检验模块,块中块的冗余模块以及块存储物理结构模块。9.优选的,所述块中块的连接结构子模块包括:在每一层,每一块都连接在一起,所述连接可以是单方向、双向和/或更多样的连接方式,在每一层,每一块存有前面同一层的对应块的哈希,由于区块链内交易块大小由当时交易的情况决定,每个交易块大小不同。一个小块可以存不同数量的交易块,如果交易块体积大于小块,则多个小块可以共同存储这个交易块;数据块以大小分层,其中,中块包括小块,所有的中块由中块块头和小块组成,每一个中块块头指向下一块的中块块头,小块的结构也类似,中块块头由下一中块地址,本中块第一小块地址,小块数量,上一中块的哈希值,以及时间戳五部分内容组成,也就是说中块块头既指向下一中块的块头地址,也指向本中块内部第一小块的地址,并存储了上一中块的哈希值以确保数据不被篡改,每一中块的最后一小块存储下一中块的第一小块的地址,小块包含多个交易块信息,中块和小块的数据结构是单向连接,如果是双向连接,或是其他复杂连接,数据结构可以对应的更新。10.优选的,所述块中块的检验模块用于实施块中块的检验机制,假设一个中块有n个小块:前一个中块哈希加上新块内n小块的哈希,产生该中块的哈希,而前一中块的哈希值存在该中块里面,而该中块的哈希值被放在后一个中块信息内,可以不使用小块的哈希,而是使用小块其他信息,同时保证所有中块都有同样数量的小块的体积;假设一个大块有n个中块:前一个大块哈希加上新块内n中块的哈希,产生该大块的哈希,而前一大块的哈希值存在该大块里面。而该大块的哈希值被放在后一个大块信息内,可以不使用中块的哈希,而是使用中块其他信息,同时保证所有大块都有同样数量的中块的体积;所述的检验机制适用于其他体积的所有数据块上,并且使用任何哈希算法,从而不但区块链系统内交易块以及连接这些交易块的链不能被篡改,里面所有数据块也不能被篡改。11.优选的,所述区块链系统具有双链条机制,双链条包括交易块形成的链以及数据块形成的复杂链,多个大块形成大块链,多个中块形成中块链,多个小块形成小块链,而这些链又互相锁定,其中大块使用中块的哈希信息,中块使用小块的哈希信息,而每个交易块都存在一个小块内,从而双链条互相关联,保证了双链条内的所有数据不能被更改。12.优选的,所述块中块的检验模块使用完备性机制,所述完备性机制包括checksum、paritybit或错误校正码errorcorrectingcode机制,这些机制都可以同时间使用而不冲突。13.优选的,所述块中块的冗余模块用于实施块中块冗余机制,块中块冗余机制包括:(1)在最高端或是根端维持4个备份,所述4个备份含有一样的信息和同样的结构;(2)所有不同体积的块在逻辑层有备份;(3)备份数目可以增加或是减少;由于有多备份,每次写需要同时间在每个拷贝进行,而每次读只需要从一个拷贝读出;如果需要更准确的信息,从多出的备份读出数据,验证真实后再采用,逻辑块的完备性会被自动检验;有些所述系统在逻辑层只有一个拷贝,而不允许物理层自动做备份,对于这样的系统架构,只要物理层仍然维持“块中块“结构就可以实施冗余机制。14.优选的,块存储物理结构模块作为物理存储系统为软件定义存储系统,维护一个统一的地址空间,小块,中块,大块,大大块等的概念不同,一页大小单独由其服务器决定,并且块中块物理层维持块中块关系,每一个逻辑层的块,在物理层都有对应的物理块,架设一页可以存储一个小块或是多个小块,如果只是存一个小块,一页就是一小块,如果是多个小块,一页就成为一个中块,一个小块也可以需要多页,在物理层,每一数据块可以有自己的数据、元数据和控制代码,数据和元数一起存储或是分开存储;同样控制软件可以是在一个存储服务器上共享,或是只是预备为特殊数据块;对一物理块,控制软件包含管理软件,控制软件还包含加解密、签名和验签代码,增加物理层数据的保护;所述系统在物理层仍然维持块中块的关系,物理层的块关系比传统物理层存储系统复杂,每个中物理块下面还有对应的小物理块,块存储的物理结构依然采用块中块的模式,每个块有自己的控制软件,控制着块的读,写,和转移;物理层存储系统维持一个大的物理空间,包括按照地区、数据中心、存储服务器集群、存储服务器的顺序进行存储,地区可以保留几个大大块,数据中心对应大块,存储服务器集群对用中块,而存储服务器对应小块,按照逻辑层的块大小分配物理空间,如果物理空间存储不够将会进行反馈通知逻辑层,此时可以进行块的拆分操作,重新分配物理空间,存储将会使用最便宜的数据中心、集群、服务器,从而保证可以在最大块层面上保证4个备份以维持区块链的特性;每次读或是写,进行加密,并验证其哈希,在数据块上加入一位用于区分数据是否可写。15.优选的,所述系统与现代云计算系统结合使用,在物理层对任何文件都自动做3个备份,而且可以动态增加备份。16.优选的,在内存或是存储系统,一块内可以有一比特信息以表示这块是否被篡改过,如果被篡改过,这块是肮脏(dirty);同时,一块可以有一比特信息以表示这块是不可以被更改的,而且硬件可以对此进行处理;在物理层,成为可以支持区块链块中块结构和容错机制并且直接使用硬件来处理,控制信息可以经过物理层通知到逻辑层,而由上传应用系统决定采取什么行动。17.本发明的目的还在于提供一种基于区块链技术的块存储方法,包括:(1)逻辑层和物理层交互完成任务:由于逻辑层和物理层都维持块中块的关系,以中块为例子,其交互流程包括:逻辑层请求中块存储空间;若中块内具有存储空间,则将中块数据加密并计算哈希后写入磁盘阵列;若中块内不具有足够的空间,则通知逻辑层;逻辑层将中块分拆为小块,依次请求各小块的空间;将所述小块的数据加密并计算哈希后写入磁盘阵列;其他块的流程类似,例如大块的交互流程类似,但一个大块内含中块,而中块又内含小块。18.其中,块的物理层的数据块需要存储本块的哈希值,数据是否可写,以及加密数据信息,在逻辑层做备份后,物理层可以选择再次做备份也可以选择不做备份,以增强数据的安全性,逻辑层备份后与物理层一一对应;(2)进行物理块存储,包括:物理块存储的具体地点为:每一块和其下面的块都存储在一起,每一份存在多个不同服务器放在不同地点;物理块存储的存储策略为:按照区块链系统的标准配置,块需要多份备份,存储策略为:首先按照哈希算法确定块存储的第一份备份位置;继续用哈希算法确定在第一份备份位置的服务器的相同机架的另一服务器用来存储第二备份;挑选距离本机架物理位置较近的另一机架存储第三份块备份;挑选距离本机架物理位置较远的另一机架存储第四份块备份;以此类推,完成多份块备份;块链应用需要多地区的存储情况下,所述物理块存储的其他考量要素是物理位置;(3)数据块转移所述数据块的转移即为从一个存储服务器到另外一个存储服务器,块的存储是按照时间顺序存储,其转移的步骤如下:客户端提出数据查询请求,根据时间戳范围查询数据;根据查询请求,确定需要转移的时间戳范围内的块数据,选择适当的最小数据块进行转移。由于数据块大小固定,可以经过硬件高速转移。19.由于发送服务器的数据块维持块中块的结构,送到接收服务器后,需要检验数据是不是正确,并且查证是不是仍然维持着块中块架构;(4)接受外来块在本地硬盘内有一部分区域专门用来存储转移过来块,由于硬盘大小限制,当转移数据过多时需要进行数据调整,即将无用的数据删除,按照最远最少使用原则进行块的替换,具体替换步骤如下:块转移之后查询本地硬盘块使用区域是否已满,未满则直接存储,已满则进行相应的替换;查询所有中块,得出其最近一段时间内的使用次数为(a1,a2,...as),其中s为中块数量,设p=max(a1,a2,...as),即p为所有中块的最大使用次数;查询所有中块最近使用的时间,按照从远到近进行排序,较远的中块得分为0,较近的中块得分为p,即按照[0,p]区间进行取值,得出其按时间戳值的分数为(b1,b2,...bs),其中s为中块数量;将(a1,a2,...as)和(b1,b2,...bs)想加得出(c1,c2,...cs),其中ci=min(c1,c2,...cs),则替换掉ci块;当没有中块可以替换时,则将中块拆分成小块,进行小块的替换,其替换步骤与中块替换算法相同。[0020]本发明的有益效果:在区块链系统内可以动态维持“块中块”的结构,并且是在逻辑层和物理层都需要维持“块中块”的结构。不论在逻辑层还是物理层,块中块配置了冗余机制,这样一旦系统出问题,块中块的结构还是可以被维持。[0021]根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。附图说明[0022]后文将参照附图以示例性而非限制性的方式详细描述本发明的一些具体实施例。附图中相同的附图标记标示了相同或类似的部件或部分。本领域技术人员应该理解,这些附图未必是按比例绘制的。本发明的目标及特征考虑到如下结合附图的描述将更加明显,附图中:图1为根据现有技术的从块、文件、对象到对象存储系统的存储演变过程是以图;图2为根据本发明的优选实施例的块中块架构示意图;图3为根据本发明的优选实施例的块中块连接结构示意图;图4为根据本发明的优选实施例的从最大块开始,每个大大块、大块、中块以及最小的小块在逻辑层备份的结构示意图;图5为根据本发明优选实施例的物理存储结构示意图;图6为根据本发明优选实施例的逻辑层和物理层交互完成任务六尘土;图7为根据本发明优选实施例的物理层与逻辑层一一对应备份示意图;图8为根据本发明优选实施例的存储数据位置示意图;图9为根据本发明优选实施例的块中块逻辑图或物理图;图10为根据本发明优选实施例的块的添加流程示意图。具体实施方式[0023]为了使得本发明能够针对其发明要点更加明显易懂,下面将结合附图和实例对本发明作进一步的说明。在下面的描述中阐述了很多细节和具体实例,提供这些实例是为了能够更透彻地理解本发明,并且能够将本发明完整形象地传达给本领域的技术人员。虽然本发明能够以很多不同于此描述的其它方式实施,但是本领域技术人员可以在不违背本发明内涵的情况下做相应的推广,因此本发明不受下面公开的具体实例及具体附图所限制。[0024]在下面的描述中阐述了很多细节和具体实例,提供这些实例是为了能够更透彻地理解本发明,并且能够将本发明完整形象地传达给本领域的技术人员。虽然本发明能够以很多不同于此描述的其它方式实施,但是本领域技术人员可以在不违背本发明内涵的情况下做相应的推广,因此本发明不受下面公开的具体实例及具体附图所限制。[0025]如图2所示,本发明的目的在于提供一种基于区块链技术的块存储系统,区块链系统一直动态维持着如图2所示的块中块架构,所述块中块架构中,几个区块链交易块组成一个小块,几个所述小块组成中块,几个所述中块组成大块,几个所述大块组成大大块。在每一层,块的体积可以固定,方便硬件(包括cpu、内存、存储、手机系统内)处理。块中块架构协助区块链系统作业,包括交易,查询等。[0026]区块链块信息和传统文件信息不同:区块链块信息不能更改,而传统文件可以更改;区块链信息只需要查询,不能写;区块链信息多半有隐私的需要。因此为避免技术术语的误解,将传统区块链系统内的区块在本说明书中标识为交易块,将块中块系统内的数据块标识为逻辑块(如果在逻辑层)或是物理块(或是在物理层)。如果不特别表明,本说明书上提及的任何块属于块中块的数据块。[0027]基于区块链技术的块存储系统中包括块与块的连接结构子模块,块中块的检验模块,块中块的冗余模块以及块存储物理结构模块。[0028]作为优选的实施例,所述块中块的连接结构子模块包括:传统上,文件存储冗余机制是在物理层提供的,例如在云计算系统内,一个文件至少有3个拷贝,由下面物理层提供。本发明采用逻辑层加冗余机制,但是需要对应的预备工作,需要先定义块中块内块连接结构,如图3所示,在每一层,例如小块层,每一小块都连接在一起;而在中块层,每一中块也连接在一起。[0029]作为优选的实施方式,所述连接可以是单方向,也可以是双向的,或是更多样的连接方式。图2中小块是单方向的,但是中块是双方向。[0030]作为优选的实施方式,本实施例假设每一中块有4个小块,当然这种配置可以随服务器硬件配置而改变,例如可以是8块,16块,或是其他块数。当然,也不必一定为2进制,可以采用10进制,从而对应10块,100块等;或是其他进制。由于小块的内容是由区块链交易块组成,包括一起存储的密文和明文。在每一层,每一块存有前面同一层的对应块的哈希。由于区块链内交易块大小由当时交易的情况决定,每个交易块大小不同。一个小块可以存不同数量的交易块,如果交易块体积大于小块,则多个小块可以共同存储这个交易块。[0031]数据块以大小分层(例如大大块,大块,中块,小块),中块包括小块,所有的中块由中块块头和小块组成,每一个中块块头指向下一块的中块块头,小块的结构也类似,中块的块头结构如下表1所示:表1中块的块头结构下一中块地址上一中块的哈希值时间戳小数据块数量第一个小块信息(包括明文和密文)第二个小块信息(包括明文和密文)第三个小块信息(包括明文和密文)第四个小块信息(包括明文和密文)中块块头由下一中块地址,本中块第一小块地址,小块数量,上一中块的哈希值,以及时间戳五部分内容组成,也就是说中块块头既指向下一中块的块头地址,也指向本中块内部第一小块的地址,并存储了上一中块的哈希值以确保数据不被篡改,每一中块的最后一小块存储下一中块的第一小块的地址。[0032]小块的结构如下表2所示:表2小块的结构下一小块地址上一小块的哈希值时间戳交易块数量第一个交易块信息(包括明文和密文)第二个交易块信息(包括明文和密文)第三个交易块信息(包括明文和密文)第四个交易块信息(包括明文和密文)第五个交易块信息(包括明文和密文)小块包含多个交易块信息,由于交易块提交不同,一个小块包含的交易块数量不定,本实施例示出使用5个交易块的情况。[0033]作为优选的实施方式,本实施例的中块和小块的数据结构是单向连接,如果是双向连接,或是其他复杂连接,数据结构可以对应的更新。[0034]其他层的数据块(例如大块,大大块,或是更大的数据块)也是有类似数据结构。[0035]作为优选的实施方式,块中块的检验模块用于实施块中块的检验机制。[0036]传统区块链使用层层哈希方法,即将前一交易块的哈希存在该块中,并且和该块的新信息一起再次实施哈希运算,新的哈希运算值被下一交易块保存,从而保证数据不会被篡改。将这种方法扩展到块中块结构中,但是算法和检验方法不同。[0037]以中块为例,假设一个中块有4个小块:前一个中块哈希加上新块内4小块的哈希,产生该中块的哈希,而前一中块的哈希值存在该中块里面,而该中块的哈希值被放在后一个中块信息内。[0038]作为优选的实施方式,可以不使用小块的哈希,而是使用小块其他信息,这不会影响机制的有效性。而一个中块可以有不同数目的小块,并且保证该数目必须是一致的,即所有中块都有同样数量的小块的体积。[0039]以大块为例,假设一个大块有4个中块:前一个大块哈希加上新块内4中块的哈希,产生该大块的哈希,而前一大块的哈希值存在该大块里面。而该大块的哈希值被放在后一个大块信息内。[0040]作为优选的实施方式,可以不使用中块的哈希,而是使用中块其他信息,这不会影响机制的有效性。而一个大块可以有不同数目的中块,并且保证该数目必须是一致的,即所有大块都有同样数量的中块的体积。[0041]当然,上面描述可以延伸到其他体积的数据块上,例如大大块,大大大块。并且可以使用任何区块链
技术领域:
:认可并成熟的哈希算法。从而不但区块链系统内交易块(以及连接这些交易块的链)不能被篡改,里面所有数据块也不能被篡改。[0042]一个区块链系统就具有了双链条机制,双链条包括交易块形成的链以及数据块形成的复杂链。复杂链复杂的原因在于多个大块形成大块链,多个中块形成中块链,多个小块形成小块链,而这些链又互相锁定,其中大块使用中块的哈希信息,中块使用小块的哈希信息,而每个交易块都存在一个小块内,从而双链条互相关联,保证了双链条内的所有数据不能被更改。保护机制更加增加区块链系统的安全性和完整性,在数据转移和查询的时候,可以高速查验。该保护机制可以使用在逻辑层,也可以使用在物理层。并且物理层由于有硬件处理作为辅助,会更加便利和高速。[0043]作为优选的实施方式,还可以同时使用其他完备性机制,例如checksum、paritybit或错误校正码(errorcorrectingcode)机制,这些机制都可以同时间使用而不冲突。[0044]作为优选的实施方式,所述块中块的冗余模块用于实施块中块冗余机制。传统上,这样的机制是由物理层提供的,但是本发明提出在逻辑层实施冗余机制。[0045]如图4所示,块中块冗余机制包括:(1)在最高端或是根端维持4个备份,例如最大块是大大块,根端就维持4个大大块,这4个大大块含有一样的信息和同样的结构。[0046](2)从最大块开始,架构就如上的描述,从最大块开始,每个大大块、大块、中块,以及最小的小块等都在逻辑层有备份。[0047](3)备份数目可以增加或是减少,例如可以是2个备份,3个备份,或是5个或是更高的备份。[0048]由于有多备份,每次“写”需要同时间在每个拷贝进行。而每次读只需要从一个拷贝读出。如果需要更准确的信息,可以从多的备份读出数据,验证真实后再采用。逻辑块的完备性会被自动检验。[0049]作为优选的实施方式,有些系统可能在逻辑层只有一个拷贝,而不允许物理层自动做备份,对于这样的系统架构,只要物理层仍然维持“块中块“结构就可以实施冗余机制,但是物理层管理软件的工作量比较大。[0050]作为优选的实施方式,块存储物理结构模块作为物理存储系统,可以为“软件定义存储”(softwaredefinedstorage,sds)系统,维护一个统一的地址空间,例如0到10000000000(代表很大的一个数)代表可以存储万万亿级的数据块。但是这些是物理数据块,对应的是传统操作系统内的页(page)。而本发明中小块,中块,大块,大大块等的概念不同,一页大小单独由其服务器决定。[0051]不同于传统数据存储系统,本实施例中块中块物理层也维持块中块关系。传统数据块都是独立,而是由逻辑层和元数据控制。例如在图1,逻辑层维持逻辑上的块关系,而在物理层,块管理是由物理层内的大表控制。由于大表只是维持逻辑块和物理块的映射,块中块的关系遗失。本实施例提出逻辑层的块中块关系仍然维持在物理层,具有如下有益效果:(1)许多区块链实施都是在交易块上进行,包括交易,查账,共识等。如果物理层维持这样关系,由于数据聚在一起,查询方便很多。[0052](2)如果需要建立新节点,或是换服务器,或是恢复死机的服务器,大块转移比小物理块转移更方便,而且数据到达后,可以很快对数据和机制进行检验,例如确定块内的结构和哈希值,从而助力区块链交易实施,让新服务器很快可以运转起来。[0053]这里每一个逻辑层的块,在物理层都有对应的物理块,例如小逻辑块有对应的小物理块,中逻辑块有对应的中物理块,大逻辑块有对应的大物理块,大大逻辑块有对应的大大物理块存储。架设一页可以存储一个小块或是多个小块:如果只是存一个小块,一页就是一小块;如果是多个小块,一页就成为一个中块。一个小块也可以需要多页。这些可以根据实际物理服务器以及区块链应用而调整。[0054]现代存储系统,在物理层,每一数据块可以有自己的数据(data)、元数据(metadata)和控制代码(controlsoftware)。数据和元数一起存储或是分开存储;同样控制软件可以是在一个存储服务器上共享,或是只是预备为特殊数据块。[0055]对一物理块,控制软件包含管理软件。例如,块数据不能被更改,控制着块的读、写、和转移,记录读的次数和频率,以及验证块数据的完整性,例如哈希值是不是正确。控制软件还可以包含加解密、签名和验签代码,增加物理层数据的保护。[0056]由于在物理层仍然维持块中块的关系,物理层的块关系比传统物理层存储系统复杂。每个中物理块下面还有对应的小物理块,块存储的物理结构依然采用块中块的模式,每个块有自己的控制软件,控制着块的读,写,和转移。[0057]物理层存储系统维持一个大的物理空间,例如地区、数据中心、存储服务器集群、存储服务器这样的顺序进行存储,例如地区可以保留几个大大块,数据中心对应大块,存储服务器集群对用中块,而存储服务器对应小块,按照逻辑层的块大小分配物理空间,如果物理空间存储不够将会进行反馈通知逻辑层,此时可以进行块的拆分操作,重新分配物理空间。存储将会使用最便宜的数据中心、集群、服务器,从而保证可以在最大块层面上保证4个备份以维持区块链的特性。每次读或是写,需要进行加密,并验证其哈希,在数据块上加入一位用于区分数据是否可写。其块的物理存储结构如图5所示(以最大块为中块举例)。[0058]作为优选的实施方式,现代云计算,在物理层对任何文件都自动做3个备份,而且可以动态增加备份。这样的机制可以和本实施例方法共同使用,这是由于本发明的协议和这些传统实施方式并不冲突,并且在逻辑层已经做备份,如果在物理层再预备多备份,备份会过多。[0059]作为优选的实施方式,在一些内存或是存储系统,一块内可以有一比特信息以表示这块是否被篡改过,如果被篡改过,这块是肮脏(dirty);同时,一块可以有一比特信息以表示这块是不可以被更改的,而且硬件可以对此进行处理。在物理层,成为可以支持区块链块中块结构和容错机制。特别是在物理层,可以直接使用硬件来处理。控制信息可以经过物理层通知到逻辑层,而由上传应用系统决定采取什么行动。[0060]区块链内的交易块完成后,是不能被更改的,在块中块系统内,一个数据块,不论是大大块,大块,中块,或是小块,一旦填满后,也是不能更改。数据块可以放转移到别的服务器,但是内容却不能更改。一旦被更改,硬件服务器通知上层逻辑层,一个不能更改的数据块被更改了。[0061]本实施例还提供一种基于区块链技术的块存储方法,包括:(1)逻辑层和物理层交互完成任务:由于逻辑层和物理层都维持块中块的关系,以中块为例子,其交互流程如下图6所示,包括:逻辑层请求中块存储空间;若中块内具有存储空间,则将中块数据加密并计算哈希后写入磁盘阵列;若中块内不具有足够的空间,则通知逻辑层;逻辑层将中块分拆为小块,依次请求各小块的空间;将所述小块的数据加密并计算哈希后写入磁盘阵列。[0062]其他块的流程类似,例如大块的交互流程类似,但一个大块内含中块,而中块又内含小块。[0063]块的物理层的数据块需要存储本块的哈希值,数据是否可写,以及加密数据信息,其数据结构如表3所示。[0064]表3块的物理层数据块的数据结构因此,本发明的创新在于在逻辑层做备份后,物理层可以选择再次做备份也可以选择不做备份,以增强数据的安全性,逻辑层备份后与物理层一一对应,如图7所示。[0065](2)进行物理块存储,包括:物理块存储的具体地点为:每一块尽量和其下面的块都存储在一起,例如存4份(这是区块链系统标准标配,因为需要拜占庭将军协议,需要至少4个备份)。在特殊情况下,冗余数目可以增加,或是减少。每一份存在4个不同服务器放在不同地点。存储数据的位置示意图如图8所示。[0066]物理块存储的存储策略:按照区块链系统的标准配置,块需要4份备份,存储策略为:首先按照哈希算法确定块存储的第一份备份位置;继续用哈希算法确定在第一份备份位置的服务器的相同机架的另一服务器用来存储第二备份;挑选距离本机架物理位置较近的另一机架存储第三份块备份;挑选距离本机架物理位置较远的另一机架存储第四份块备份。[0067]作为优选的实施方式,也可以使用其他块存储算法,由于小物理块存在中物理块中,中物理块存在大物理块中,因此以最大块的体积决定存储的位置。[0068]其他考量的要素是物理位置,有些区块链应用需要多地区的存储,例如亚洲和欧洲跨国跨境支付应用的存储,需要以跨地区的考量为优先。[0069](3)数据块转移所述数据块的转移即为从一个存储服务器到另外一个存储服务器,例如从远程服务器转移到本地硬盘内,或是从本地服务器到远处服务器。块的存储是按照时间顺序存储,其转移的步骤如下:客户端提出数据查询请求,根据时间戳范围查询数据;根据查询请求,确定需要转移的时间戳范围内的块数据,选择适当的最小数据块进行转移。由于数据块大小固定,可以经过硬件高速转移。[0070]由于发送服务器的数据块维持块中块的结构,送到接收服务器后,需要检验数据是不是正确,并且查证是不是仍然维持着块中块架构。[0071](4)接受外来块在本地硬盘内有一部分区域专门用来存储转移过来块,由于硬盘大小限制,当转移数据过多时需要进行数据调整,即将无用的数据删除,按照最远最少使用原则进行块的替换,具体替换步骤如下:块转移之后查询本地硬盘块使用区域是否已满,未满则直接存储,已满则进行相应的替换。[0072]查询所有中块,得出其最近一段时间内的使用次数为(a1,a2,...as),其中s为中块数量,设p=max(a1,a2,...as),即p为所有中块的最大使用次数。[0073]查询所有中块最近使用的时间,按照从远到近进行排序,较远的中块得分为0,较近的中块得分为p,即按照[0,p]区间进行取值,得出其按时间戳值的分数为(b1,b2,...bs),其中s为中块数量。[0074]将(a1,a2,...as)和(b1,b2,...bs)想加得出(c1,c2,...cs),其中ci=min(c1,c2,...cs),则替换掉ci块。[0075]当没有中块可以替换时,则将中块拆分成小块,进行小块的替换,其替换步骤与中块替换算法相同。[0076]图9显示2个大块,8个中块,32个小块的架构。由于逻辑和物理结构是1-1对应,这可以是逻辑图,也可以是物理图。[0077]图10所示为块的添加流程图,块具有区块链数据的特性,一旦写入就不能再次修改,保证数据的不可篡改性,由于每一个块都存储有上一块的哈希值,所以数据的添加操作只能在链表尾部进行,因为如果在其他位置,则需要修改块添加处之后的所有块的哈希值信息,每一个中块包含的小块数可以设定,块添加之前首先添加小块,如果该中块已满则构造新的中块并将新数据放入新中块的第一小块。[0078]在区块链系统内可以动态维持“块中块”的结构,并且是在逻辑层和物理层都需要维持“块中块”的结构。不论在逻辑层还是物理层,块中块配置了冗余机制,这样一旦系统出问题,块中块的结构还是可以被维持。[0079]虽然本发明已经参考特定的说明性实施例进行了描述,但是不会受到这些实施例的限定而仅仅受到附加权利要求的限定。本领域技术人员应当理解可以在不偏离本发明的保护范围和精神的情况下对本发明的实施例能够进行改动和修改。当前第1页12当前第1页12
技术特征:
1.一种基于区块链技术的块存储系统,其特征在于:所述块存储一直动态维持块中块架构,所述块中块架构中,几个区块链交易块组成一个小块,几个所述小块组成中块,几个所述中块组成大块,几个所述大块组成大大块,在所述区块链的每一层,块的体积固定,所述基于区块链技术的块存储系统包括块与块的连接结构子模块,块中块的检验模块,块中块的冗余模块以及块存储物理结构模块。2.根据权利要求1所述的一种基于区块链技术的块存储系统,其特征在于:所述块中块的连接结构子模块包括:在每一层,每一块都连接在一起,所述连接可以是单方向、双向和/或更多样的连接方式,在每一层,每一块存有前面同一层的对应块的哈希,由于区块链内交易块大小由当时交易的情况决定,每个交易块大小不同;一个小块可以存不同数量的交易块,如果交易块体积大于小块,则多个小块可以共同存储这个交易块;数据块以大小分层,其中,中块包括小块,所有的中块由中块块头和小块组成,每一个中块块头指向下一块的中块块头,小块的结构也类似,中块块头由下一中块地址,本中块第一小块地址,小块数量,上一中块的哈希值,以及时间戳五部分内容组成,也就是说中块块头既指向下一中块的块头地址,也指向本中块内部第一小块的地址,并存储了上一中块的哈希值以确保数据不被篡改,每一中块的最后一小块存储下一中块的第一小块的地址,小块包含多个交易块信息,中块和小块的数据结构是单向连接,如果是双向连接,或是其他复杂连接,数据结构可以对应的更新。3.根据权利要求1所述的一种基于区块链技术的块存储系统,其特征在于:所述块中块的检验模块用于实施块中块的检验机制,假设一个中块有n个小块:前一个中块哈希加上新块内n小块的哈希,产生该中块的哈希,而前一中块的哈希值存在该中块里面,而该中块的哈希值被放在后一个中块信息内,可以不使用小块的哈希,而是使用小块其他信息,同时保证所有中块都有同样数量的小块的体积;假设一个大块有n个中块:前一个大块哈希加上新块内n中块的哈希,产生该大块的哈希,而前一大块的哈希值存在该大块里面;而该大块的哈希值被放在后一个大块信息内,可以不使用中块的哈希,而是使用中块其他信息,同时保证所有大块都有同样数量的中块的体积;所述的检验机制适用于其他体积的所有数据块上,并且使用任何哈希算法,从而不但区块链系统内交易块以及连接这些交易块的链不能被篡改,里面所有数据块也不能被篡改。4.根据权利要求3所述的一种基于区块链技术的块存储系统,其特征在于:所述区块链系统具有双链条机制,双链条包括交易块形成的链以及数据块形成的复杂链,多个大块形成大块链,多个中块形成中块链,多个小块形成小块链,而这些链又互相锁定,其中大块使用中块的哈希信息,中块使用小块的哈希信息,而每个交易块都存在一个小块内,从而双链条互相关联,保证了双链条内的所有数据不能被更改。5.根据权利要求1所述的一种基于区块链技术的块存储系统,其特征在于:所述块中块的检验模块使用完备性机制,所述完备性机制包括checksum、parity bit或错误校正码error correcting code机制,这些机制都可以同时间使用而不冲突。6.根据权利要求1所述的一种基于区块链技术的块存储系统,其特征在于:所述块中块的冗余模块用于实施块中块冗余机制,块中块冗余机制包括:(1)在最高端或是根端维持4个备份,所述4个备份含有一样的信息和同样的结构;(2)所有不同体积的块在逻辑层有备份;
(3)备份数目可以增加或是减少;由于有多备份,每次写需要同时间在每个拷贝进行,而每次读只需要从一个拷贝读出;如果需要更准确的信息,从多出的备份读出数据,验证真实后再采用,逻辑块的完备性会被自动检验;有些所述系统在逻辑层只有一个拷贝,而不允许物理层自动做备份,对于这样的系统架构,只要物理层仍然维持“块中块“结构就可以实施冗余机制。7.根据权利要求1所述的一种基于区块链技术的块存储系统,其特征在于:块存储物理结构模块作为物理存储系统为软件定义存储系统,维护一个统一的地址空间,小块, 中块,大块,大大块等的概念不同,一页大小单独由其服务器决定,并且块中块物理层维持块中块关系,每一个逻辑层的块,在物理层都有对应的物理块,架设一页可以存储一个小块或是多个小块,如果只是存一个小块,一页就是一小块,如果是多个小块,一页就成为一个中块,一个小块也可以需要多页,在物理层,每一数据块可以有自己的数据、元数据和控制代码,数据和元数一起存储或是分开存储;同样控制软件可以是在一个存储服务器上共享,或是只是预备为特殊数据块;对一物理块,控制软件包含管理软件,控制软件还包含加解密、签名和验签代码,增加物理层数据的保护;所述系统在物理层仍然维持块中块的关系,物理层的块关系比传统物理层存储系统复杂,每个中物理块下面还有对应的小物理块,块存储的物理结构依然采用块中块的模式,每个块有自己的控制软件,控制着块的读,写,和转移;物理层存储系统维持一个大的物理空间,包括按照地区、数据中心、存储服务器集群、存储服务器的顺序进行存储,地区可以保留几个大大块,数据中心对应大块,存储服务器集群对用中块,而存储服务器对应小块,按照逻辑层的块大小分配物理空间,如果物理空间存储不够将会进行反馈通知逻辑层,此时可以进行块的拆分操作,重新分配物理空间,存储将会使用最便宜的数据中心、集群、服务器,从而保证可以在最大块层面上保证4个备份以维持区块链的特性;每次读或是写,进行加密,并验证其哈希,在数据块上加入一位用于区分数据是否可写。8.根据权利要求1所述的一种基于区块链技术的块存储系统,其特征在于:所述系统与现代云计算系统结合使用,在物理层对任何文件都自动做3个备份,而且可以动态增加备份。9.根据权利要求1所述的一种基于区块链技术的块存储系统,其特征在于:在内存或是存储系统,一块内可以有一比特信息以表示这块是否被篡改过,如果被篡改过,这块是肮脏;同时,一块可以有一比特信息以表示这块是不可以被更改的,而且硬件可以对此进行处理;在物理层,成为可以支持区块链块中块结构和容错机制并且直接使用硬件来处理,控制信息可以经过物理层通知到逻辑层,而由上传应用系统决定采取什么行动。10.一种根据权利要求1-9任一所述基于区块链技术的块存储系统的块存储方法,其特征在于包括:(1)逻辑层和物理层交互完成任务:由于逻辑层和物理层都维持块中块的关系,以中块为例子,其交互流程包括:逻辑层请求中块存储空间;若中块内具有存储空间,则将中块数据加密并计算哈希后写入磁盘阵列;若中块内不具有足够的空间,则通知逻辑层;逻辑层将中块分拆为小块,依次请求各小块的空间;
将所述小块的数据加密并计算哈希后写入磁盘阵列;其他块的流程类似,例如大块的交互流程类似,但一个大块内含中块,而中块又内含小块;其中,块的物理层的数据块需要存储本块的哈希值,数据是否可写,以及加密数据信息,在逻辑层做备份后,物理层可以选择再次做备份也可以选择不做备份,以增强数据的安全性,逻辑层备份后与物理层一一对应;(2)进行物理块存储,包括:物理块存储的具体地点为:每一块和其下面的块都存储在一起,每一份存在多个不同服务器放在不同地点;物理块存储的存储策略为:按照区块链系统的标准配置,块需要多份备份,存储策略为:首先按照哈希算法确定块存储的第一份备份位置;继续用哈希算法确定在第一份备份位置的服务器的相同机架的另一服务器用来存储第二备份;挑选距离本机架物理位置较近的另一机架存储第三份块备份;挑选距离本机架物理位置较远的另一机架存储第四份块备份;以此类推,完成多份块备份;块链应用需要多地区的存储情况下,所述物理块存储的其他考量要素是物理位置;(3)数据块转移所述数据块的转移即为从一个存储服务器到另外一个存储服务器,块的存储是按照时间顺序存储,其转移的步骤如下:客户端提出数据查询请求,根据时间戳范围查询数据;根据查询请求,确定需要转移的时间戳范围内的块数据,选择适当的最小数据块进行转移;由于数据块大小固定,可以经过硬件高速转移;由于发送服务器的数据块维持块中块的结构,送到接收服务器后,需要检验数据是不是正确,并且查证是不是仍然维持着块中块架构;(4)接受外来块在本地硬盘内有一部分区域专门用来存储转移过来块,由于硬盘大小限制,当转移数据过多时需要进行数据调整,即将无用的数据删除,按照最远最少使用原则进行块的替换,具体替换步骤如下:块转移之后查询本地硬盘块使用区域是否已满,未满则直接存储,已满则进行相应的替换;查询所有中块,得出其最近一段时间内的使用次数为(a1,a2,...as),其中s为中块数量,设p=max(a1,a2,...as),即p为所有中块的最大使用次数;查询所有中块最近使用的时间,按照从远到近进行排序,较远的中块得分为0,较近的中块得分为p,即按照[0,p]区间进行取值,得出其按时间戳值的分数为(b1,b2,...bs),其中s为中块数量;将(a1,a2,...as)和(b1,b2,...bs)想加得出(c1,c2,...cs),其中ci=min(c1,c2,
...cs),则替换掉ci块;当没有中块可以替换时,则将中块拆分成小块,进行小块的替换,其替换步骤与中块替换算法相同。
技术总结
本发明提供一种基于区块链技术的块存储系统,所述块存储一直动态维持块中块架构,所述块中块架构中,几个区块链交易块组成一个小块,几个所述小块组成中块,几个所述中块组成大块,几个所述大块组成大大块,在所述区块链的每一层,块的体积固定,所述基于区块链技术的块存储系统包括块与块的连接结构子模块,块中块的检验模块,块中块的冗余模块以及块存储物理结构模块。还提供了相应的块存储方法,在区块链系统内可以动态维持“块中块”的结构,并且是在逻辑层和物理层都需要维持“块中块”的结构。不论在逻辑层还是物理层,块中块配置了冗余机制,这样一旦系统出问题,块中块的结构还是可以被维持。还是可以被维持。还是可以被维持。
技术研发人员:蔡维德
受保护的技术使用者:天民(青岛)国际沙盒研究院有限公司
技术研发日:2021.08.13
技术公布日:2022/3/8