CN109491968B - 一种文件处理方法、装置、设备及计算机可读存储介质 - Google Patents
一种文件处理方法、装置、设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN109491968B CN109491968B CN201811349505.3A CN201811349505A CN109491968B CN 109491968 B CN109491968 B CN 109491968B CN 201811349505 A CN201811349505 A CN 201811349505A CN 109491968 B CN109491968 B CN 109491968B
- Authority
- CN
- China
- Prior art keywords
- file
- data
- data blocks
- storage
- hash value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
Abstract
本申请公开了一种文件处理方法,包括:利用纠删码算法将文件编码生成多个数据块,将所述多个数据块存储于至少两个存储节点,所述存储节点至少包括分布式文件系统中的存储节点;其中,一个数据块只被存储一次;在区块链网络中存储所述文件的文件索引、所述多个数据块中每个数据块各自的存储地址以及所述文件相关的哈希值。如此,大幅降低了数据冗余度,实现以更小的数据冗余度获得更高数据可靠性,提高了存储空间利用率。并且,该方法采用了区块链网络与链外式分布存储系统联合存储的方式,降低了区块链网络的存储压力,通过引入分布式文件系统,扩展了存储容量。本申请还公开了一种文件处理装置、设备、介质以及计算机程序产品。
Description
技术领域
本申请涉及区块链技术领域,尤其涉及一种文件处理方法、装置、设备及计算机可读存储介质。
背景技术
随着区块链技术近几年的快速发展,区块链网络几乎可以应用到任何领域,如在金融、物流、公共服务器、物联网等领域都已经有大量的应用案例。区块链在各个领域的应用中,都是基于其所具有的多方共识、交易溯源、以及不可篡改等技术特点,以用于实现数据存储。因此,区块链的本质也可以理解为是一种特殊的分布式数据库,其主要用于存储数据。
目前在各个领域中应用区块链网络实现数据存储时,随着业务量的快速增长,区块链网络所面临的数据存储压力也在快速增长,考虑到区块链网络中节点容量和性能的有限的情况,为了满足数据存储需求,通常会在区块链网络之外,再额外增加部署一套存储系统,称之为链外存储系统,其专门用于存储数据本身,而将数据本身在该存储系统中的地址信息以及数据本身的哈希值存在区块链网络中,以保证数据的可靠性。
由于数据本身存储在该链外存储系统中,该链外存储系统并没有防篡改功能,因此原始数据很容易被篡改或者删除,而一旦原始数据被篡改或者被删除,将会导致原始数据无法被恢复,数据的安全性存在很大隐患。目前为了提高数据的安全性,在该存储系统中通常采用多副本数据冗余技术增加区块链外存储的数据的安全性,这又额外增加了存储系统的存储压力,降低了存储系统的存储空间利用率。可见,现阶段亟需提供一种方案以同时解决存储文件时区块链网络存储容量有限和数据存储安全性不足的问题。
发明内容
本申请实施例提供了一种文件处理方法,该方法利用纠删码算法将文件编码生成包含原始数据块和校验块在内的多个数据块,将多个数据块存储于至少两个存储节点,以实现数据冗余,保证数据可靠性,并且将数据块采用区块链网络以及链外存储系统联合存储,降低区块链网络存储压力。基于此,本申请还提供了一种文件处理装置、设备、存储介质以及计算机程序产品。
有鉴于此,本申请第一方面提供了一种文件处理方法,所述方法包括:
利用纠删码算法将文件编码生成多个数据块,所述多个数据块包括文件的原始数据块以及校验块;
将所述多个数据块存储于至少两个存储节点,所述存储节点至少包括分布式文件系统中的存储节点;其中,一个数据块只被存储一次;以及,
在区块链网络中存储所述文件的文件索引、所述多个数据块中每个数据块各自的存储地址以及所述文件相关的哈希值。
本申请第二方面提供了一种文件处理装置,所述装置包括:
生成模块,用于利用纠删码算法将文件编码生成多个数据块,所述多个数据块包括文件的原始数据块以及校验块;
存储模块,用于将所述多个数据块存储于至少两个存储节点,所述存储节点至少包括分布式文件系统中的存储节点;其中,一个数据块只被存储一次;以及,
在区块链网络中存储所述文件的文件索引、所述多个数据块中每个数据块各自的存储地址以及所述文件相关的哈希值。
本申请第三方面提供了一种文件处理设备,所述设备包括处理器以及存储器:
所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;
所述处理器用于根据所述程序代码中的指令执行本申请第一方面所述的文件处理方法。
本申请第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质用于存储程序代码,所述程序代码用于执行上述第一方面所述的文件处理方法。
本申请第五方面提供一种包括指令的计算机程序产品,当其在计算机上运行时,使得所述计算机执行上述第一方面所述的文件处理方法。
从以上技术方案可以看出,本申请实施例具有以下优点:
本申请实施例中提供了一种文件处理方法,在存储文件时,利用纠删码算法将文件编码生成多个数据块,多个数据块中包含文件的原始数据块以及校验块,将多个数据块存储于至少两个存储节点,当某一原始数据块被篡改或丢失时,可以通过其他未被篡改的原始数据块以及校验块恢复该原始数据块,与复制副本的存储方式相比,该方法每个数据块仅存储一次,大幅降低了数据冗余度,实现以更小的数据冗余度获得更高数据可靠性,提高了存储空间利用率。并且,该方法采用了区块链网络与链外式分布存储系统联合存储的方式,在区块链网络中存储文件索引、每个数据块各自的存储地址以及文件相关的哈希值,将多个数据块全部或部分存储于分布式文件系统中的存储节点,降低了区块链网络的存储压力,通过引入分布式文件系统,扩展了存储容量。
附图说明
图1为本申请实施例中一种文件处理方法的场景示意图;
图2为本申请实施例中一种文件处理方法的方法流程图;
图3为本申请实施例中一种存储数据块的实现方式的示意图;
图4为本申请实施例中一种存储数据块的实现方式的示意图;
图5为本申请实施例中一种文件处理方法的方法流程图;
图6为本申请实施例中一种文件处理方法的方法流程图;
图7为本申请实施例中一种文件处理装置的结构示意图;
图8为本申请实施例中一种文件处理设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为了便于理解,首先对本申请涉及的专业名词及术语进行解释。
纠删码算法是一种能够对删除数据进行恢复的算法,常常用于数据存储领域,保障数据安全性。其核心思想在于,将n块原始数据元素通过一定计算得到m块冗余元素,n和m为正整数,对于这n+m块元素,当其中任意m块元素出错时,均可以通过对应的重构算法恢复出原来的n块数据。
分布式文件系统(Distributed File System,DFS)是一种采用分布式存储技术进行数据存储的文件系统,其是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点连接,其中,分布式存储技术是指将数据分散存储在多台独立的设备上,以满足大规模存储应用的需求。一个典型的网络可能包括多个供用户访问的服务器。在分布式文件系统中,往往将一台服务器或者服务器上运行的一个进程称之为一个节点,节点与节点之间通过网络互连。
区块链网络也被简称为区块链,其可以理解为一种去中心化的数据库,是一种按照时间顺序将数据区块以顺序连接的方式组合成一种链式数据结构,并以密码学方式保证数据的不可篡改和不可伪造的分布式账本。区块链是由一个个区块组成,每次写入数据相当于创建一个区块,区块链网络中的各个节点会进行同步操作,以保证区块链一致性,如此,区块链网络中的每个节点均会对写入的数据进行保存,因而能够实现交易溯源以及不可篡改。
针对现有技术中在进行文件存储时,存在的区块链网络存储容量有限以及存储安全性不足的技术问题,本申请提供了一种文件处理方法,具体为利用纠删码算法将文件编码生成包含文件的原始数据块以及校验块在内的多个数据块,该校验块可以用于与未被篡改的原始数据块结合,恢复丢失或被篡改的数据块,由于每个数据块仅存储一次,与复制副本相比,该方法大幅降低了数据冗余度,实现以更小数据冗余度获得更高数据可靠性,提高了存储空间利用率。并且,在存储文件时,采用了区块链网络与链外式分布文件系统联合存储的方式,降低了区块链网络的存储压力,通过引入分布式文件系统存储数据块,扩展了存储容量。
为了便于理解本申请的技术方案,下面结合具体场景对本申请实施例提供的文件处理方法进行介绍。
参见图1,图1为本申请实施例提供的一种文件处理方法的场景示意图,如图1所示,该应用场景中包括终端设备10、分布式文件系统20以及区块链网络30,其中,终端设备10与分布式文件系统20和区块链网络30交互,以执行本申请提供的文件处理方法。在具体实现时,终端设备10可以安装客户端,通过运行客户端以执行本申请提供的文件处理方法,也可以不用安装应用程序,而是通过浏览器运行网页以执行本申请提供的文件处理方法。
以终端设备10上安装客户端,通过运行客户端执行本申请提供的文件处理方法为例进行说明。具体地,安装于终端设备10上的客户端利用纠删码算法将文件编码生成多个数据块,多个数据块包括文件的原始数据块以及校验块,然后客户端将多个数据块存储于分布式文件系统20的至少两个存储节点中,每个数据块仅被存储一次,并在区块链网络30中存储文件的文件索引、多个数据块中每个数据块各自的存储地址以及文件相关的哈希值。
应理解的是,上述客户端具体可以是独立的应用程序,也可以是已有应用程序的功能模块或者可调用的插件等形式。
由于采用了分布式文件系统存储数据块,区块链网络仅存储文件的文件索引、多个数据块中每个数据块各自的存储地址以及文件相关的哈希值即可,如此降低了区块链网络的存储压力,克服了区块链网络存储容量有限的缺陷。而采用纠删码算法将文件编码,生成包含原始数据块和校验块在内的多个数据块,可以使得根据校验块和未被篡改的原始数据块恢复丢失或被篡改的原始数据块,保障了数据的安全性。
需要说明的是,本申请实施例中的终端设备是具有计算能力的数据处理设备,该数据处理设备能够通过任何形式的有线和/或无线连接(例如,Wi-Fi、LAN、蜂窝、同轴电缆等)实现与区块链网络和分布式文件系统交互。终端设备具体可以为智能手机、平板电脑、膝上型个人计算机、桌面型个人计算机、小型计算机、中型计算机以及大型计算机等。客户端为提供文件处理服务的应用程序或应用程序功能模块,其存储于终端设备中,当客户端运行时,终端设备执行上述文件处理方法。
需要说明的是,本申请实施例提供的一种文件处理方法也可以应用于服务器,图1仅为一种应用示例,本申请的实现并不局限于此,所有需要依赖于存储网络进行数据存储的软件应用或者硬件场景都可以利用本申请提供的该方法进行处理。
接下来,将从客户端的角度,结合附图对本申请实施例提供的文件处理方法进行详细说明。
图2为本申请实施例提供的一种文件处理方法的流程图,参见图2,该方法包括:
S201:利用纠删码算法将文件编码生成多个数据块。
所述多个数据块包括文件的原始数据块以及校验块。
在具体实现时,客户端利用纠删码算法将文件分割成片段,然后对各个片段进行编码得到文件的原始数据块,再根据该原始数据块以及纠删码算法生成校验块。其中,纠删码算法可以是里德-所罗门码(Reed-Solomon,RS)算法,也可以是局部校验编码(LocallyRepairable Codes,LRC)等其他算法,本实施例对此不作限定。
原始数据块以及校验块的数量可以根据需求进行设置,在一些可能的实现方式中,可以设置原始数据块与校验块的数量之和等于区块链网络的节点个数,校验块数量为区块链网络采用的共识算法的容错系数和区块链网络的节点个数的乘积。
具体地,客户端可以利用纠删码算法将文件编码生成N个数据块,N为区块链网络的节点个数,N为大于等于2的正整数;其中,N个数据块包括N1个原始数据块和N2个校验块,N1和N2的和值为N,并且,N2是区块链网络所采用的共识算法的容错系数和所述区块链网络的节点个数N的乘积。
区块链所采用的共识算法可以有多种,不同的共识算法的容错系数可以是不同的。例如,实用拜占庭容错算法(Practical Byzantine Fault Tolerance Algorithm,PBFT)支持1/3容错,其容错系数为1/3;可逆加成-断裂链转移聚合(Reversible Addition-Fragmentation Chain Transfer Polymerization,RAFT)算法支持1/2容错,其容错系数为1/2。当区块链网络中出现故障或作恶的节点数量占区块链网络中节点数量的比例小于或等于容错系数时,均不影响区块链网络正常工作。
基于此,利用纠删码算法对文件进行编码,当数据块的数量等于区块链网络中节点的数量,校验块的数量等于区块链网络采用的共识算法的容错系数和区块链网络的节点个数的乘积,则允许有与校验块数量相等的数据块不可用。也即不可用的数据块占数据块的比例不超过容错系数,则可以根据剩余的数据块恢复上述不可用的数据块,得到与文件相对应的完整数据块。
需要说明的是,本实施例中的文件可以是结构化数据文件,也可以是非结构化数据文件,其可以包括但不限于文本、图像、音频、视频、程序等内容;尤其是,在金融领域中,文件可以包括交易数据。当然,在不同业务场景中,文件所包含的具体业务数据类型可能不同,对此,本申请不作具体限定。
S202:将所述多个数据块存储于至少两个存储节点;以及,在区块链网络中存储所述文件的文件索引、所述多个数据块中每个数据块各自的存储地址以及所述文件相关的哈希值。
其中,所述存储节点至少包括分布式文件系统中的存储节点,一个数据块只被存储一次。
在本实施例中,客户端存储文件时,将包含原始数据块以及校验块在内的多个数据块存储于至少两个存储节点,如此,当存储节点发生故障时,客户端可以根据未发生故障的存储节点中存储的数据块,结合纠删码算法恢复故障存储节点中存储的数据块,从而得到文件对应的原始数据。
其中,将数据块存储于至少两个存储节点有两种实现方式,下面对其具体实现进行详细说明。
一种实现方式为,客户端将多个数据块全部存储于分布式文件系统中的至少两个存储节点。可以理解,数据块占用的存储空间远大于文件索引、存储地址、哈希值等数据占用的存储空间,将数据块存储在链外分布式文件系统中,将极大地减轻区块链网络的存储压力。并且,本实施例中存储的数据块是根据纠删码算法编码生成的,与复制副本的存储方式相比,每个数据块仅存储一次,其冗余度大大减小,因而提升了分布式文件系统的存储空间利用率。当存在数据块被删除或篡改时,还能够根据纠删码算法和未被删除的数据块恢复被删除或篡改的数据块,保证了文件的安全性。
为了便于理解,结合具体示例进行说明。请参见图3,分布式文件系统共有M个存储节点,M为大于或等于2的正整数,客户端生成有N个数据块,N大于或等于2,在进行存储时,客户端将这N个数据块存储在分布式系统的M个存储节点中,其中,每个数据块只存储一次。于此同时,仅在区块链网络中存储所述文件的文件索引、所述多个数据块中每个数据块各自的存储地址以及所述文件相关的哈希值。
另一种实现方式为,客户端将多个数据块中的至少一个数据块存储于所述区块链网络中的存储节点中,并且,将所述多个数据块中除去所述至少一个数据块之外的其余数据块存储于所述分布式文件系统中的存储节点中。也就是,将部分数据块存储在区块链网络的存储节点中,将另一部分数据块存储在分布式文件系统的存储节点中。于此同时,仅在区块链网络中存储所述文件的文件索引、所述多个数据块中每个数据块各自的存储地址以及所述文件相关的哈希值。该实现方式与上一实现方式的区别在于,部分数据块存储于区块链网络的存储节点中,因此,该实现方式除了具有减轻区块链网络的存储压力,降低冗余度,提升存储空间利用率,保证文件的安全性等作用以外,还能够提高文件整体的可靠性。
在一些可能的实现方式中,校验块包括全局校验块和局部校验块,在具体实现时,客户端可以将多个数据块中比较重要的数据块,如全局校验块,存储在区块链网络的存储节点中,将剩余的数据块存储在分布式文件系统中的存储节点中。由于区块链网络具有不可篡改性,因而重要的数据块被篡改或删除的几率降低,文件整体的可靠性得到提高。
为了便于理解,结合具体示例对该实现方式进行说明。请参见图4,分布式文件系统中共有M个存储节点,区块链网络中共有S个存储节点,M和S均为大于或等于2的正整数,客户端生成有N个数据块,N大于或等于2,在对数据块进行存储时,客户端将N个数据块中的至少一个数据块存储于区块链网络的存储节点中,由于数据块存储到区块链网络时,区块链网络的相关节点会自动同步,因此,上述数据块实际存储在区块链网络的S个存储节点中的至少两个存储节点。针对N个数据块中剩余的数据块,客户端将其存储于分布式文件系统的M个存储节点中的至少一个存储节点。
在进行文件存储时,客户端不仅需要存储文件对应的多个数据块,还需要对文件的文件索引、多个数据块中每个数据块各自的存储地址以及文件相关的哈希值也进行存储,以便能够根据文件索引以及各个数据块各自的存储地址查找文件,以及根据文件相关的哈希值对文件进行校验。
文件索引是一种用于查找文件的数据结构。由于文件索引能够唯一标识一个文件,因而可以将其用于查找文件。具体实现时,文件索引通常以数值形式进行表示,为了方便表述可以将文件索引对应的数值记作索引值,通过索引值可以查找到唯一文件。其中,索引值可以是系统自增的序号,也可以是文件经过哈希算法计算后得到的哈希值,或者是随机生成的通用唯一识别码(Universally Unique Identifier,UUID)。
在本实施例中,客户端将文件的文件索引、多个数据块中每个数据块各自的存储地址以及文件相关的哈希值存储在区块链网络中。其中,根据数据块的存储方式不同,每个数据块的存储地址可以是不同的。分布式文件系统在对数据块进行存储时,可以根据内容的地址,即基于数据块内容确定的哈希值存储数据块;也可以根据域名存储地址存储数据块。基于存储地址的差异,客户端在存储文件索引、多个数据块中每个数据块各自的存储地址以及文件相关的哈希值时可以有两种实现方式。
一种实现方式为,当分布式文件系统基于由数据块内容确定的哈希值(也即内容的地址)存储数据块时,则多个数据块中每个数据块各自的存储地址即为多个数据块中每个数据块各自的哈希值。如此,客户端在区块链网络中存储文件的文件索引、多个数据块中每个数据块各自的存储地址以及文件相关的哈希值时,在区块链网络中存储文件的文件索引以及与文件索引对应的多个数据块中每个数据块各自的哈希值即可。由于每个数据块的存储地址即为该数据块的哈希值,因此,在对数据块进行校验时,可以直接获取数据的存储地址进行校验,无需再次获取数据块的哈希值。
为了便于查找文件,可以将用于查找文件的多个数据块中每个数据块各自的哈希值的索引,即哈希索引,作为文件索引。当然在本申请实施例其他可能的实现方式中,文件索引也可以是系统自增的序号,或者随机生成的UUID,本申请对此不做限定。
另一种实现方式为,当分布式文件系统基于域名存储地址存储数据块时,多个数据块中的每个数据块各自的域名存储地址即为每个数据块各自的域名存储地址,如此,客户端在区块链网络中存储文件的文件索引、多个数据块中每个数据块各自的存储地址以及文件相关的哈希值时,可以在区块链网络中存储文件的文件索引、多个数据块中每个数据块各自的域名存储地址以及多个数据块中每个数据块各自的哈希值。
需要说明的是,文件相关的哈希值是用于对文件是否变动进行校验,在具体实现时,可以针对整个文件进行校验,也可以针对文件对应的多个数据块分别进行校验,基于此,文件相关的哈希值可以是文件对应的多个数据块中每个数据块各自的哈希值,也可以是文件自身的哈希值,即文件的哈希值。应理解的是,所谓文件相关的哈希值包括文件自身的哈希值和/或所述文件对应的所述多个数据块中每个数据块各自的哈希值。
当区块链网络中存储多个数据块中每个数据块各自的哈希值时,可以采用梅克尔树结构在区块链网络中存储多个数据块每个数据块各自的哈希值。在具体实现时,客户端可以构建一个梅克尔树,将分布式文件系统的存储节点存储的数据块的哈希值依次存储在梅克尔树的各个节点中,然后将该梅克尔树存储在区块链网络中。如此,后续对数据块进行校验时,还可以通过梅克尔树快速比较,以确定各个数据块是否异常。
作为本申请的一个具体示例,分布式文件系统可以为星际文件系统(InterPlanetary File System,IPFS)。IPFS基于内容的地址存储数据块,当文件存在改动,改动的数据块对应的哈希值也会发生改变;当一个新的文件对应的数据块被存储到IPFS中时,该文件的哈希值作为该文件的索引存储在区块链网络中。如此,将文件的哈希值作为文件索引查找文件时,可以快速确定文件是否被篡改或删除。
可以理解的是,分布式文件系统的存储节点个数可以根据存储需求而设置,在一些可能的实现方式中,可以设置分布式文件系统的存储节点个数大于区块链网络的的存储节点个数。例如,分布式文件系统存储节点个数为100,区块链网络存储节点个数为50,基于此,对文件进行编码生成得到50个数据块,可以将这50个数据块分别存储在分布式文件系统中的50个存储节点,而这50个存储节点所属的控制机构同时还控制区块链网络的存储节点。
在另一些可能的实现方式中,分布式文件系统的存储节点个数与区块链网络的存储节点个数相同。如此,采用纠删码算法生成的数据块等于区块链网络的存储节点个数时,可以将数据块均匀地存储在分布式系统的每个存储节点中,在分布式系统的存储节点与区块链网络节点由相同机构控制的情况下,可以使得分布式文件系统的容错性与区块链网络的容错性保持一致。
进一步地,为了提高资源利用率,还可以将分布式文件系统的存储节点和区块链网络的存储节点部署在同一个设备上。对于企业而言,通过该方法可以提高网络设备等资源的利用率,降低成本。
以上为本申请实施例提供的一种文件处理方法,该方法基于纠删码算法对文件进行处理得到多个数据块,然后将多个数据块存储于至少两个存储节点,当某一原始数据块被篡改或丢失时,可以通过其他未被篡改的原始数据块以及校验块恢复该原始数据块,与复制副本的存储方式相比,该方法将每个数据块仅存储一次,大幅降低了数据冗余度,实现以更小的数据冗余度获得更高数据可靠性,提高了存储空间利用率。并且,该方法采用了区块链网络与链外式分布存储系统联合存储的方式,在区块链网络中存储文件索引、每个数据块各自的存储地址以及文件相关的哈希值,将多个数据块全部或部分存储于分布式文件系统中的存储节点,降低了区块链网络的存储压力,通过引入分布式文件系统,扩展了存储容量。
由于本申请提供的文件处理方法是将文件分割为数据块存储在不同的存储节点中,考虑到文件读取效率问题,在存储节点数量较多的情况下,利用纠删码算法对文件进行编码生成数据块时,还可以对数据块的数量进行限制,并将其存储在对应数量的存储节点上,如此可以避免数据块的分布过于零散,影响文件读取效率。进一步地,针对每个数据块,将其存储在哪一存储节点,可以根据用户需求而设置。在一些可能的实现方式中,可以采用就近原则,将数据块存储在与其距离最近的存储节点中。下面对就近存储的具体实现进行详细说明。
客户端可以根据多个数据块中每个数据块的哈希值和存储节点身份标识,确定每个数据块与节点之间的距离,根据该距离客户端可以确定每个数据块距离最近的存储节点,客户端将每个数据块存储在与其距离最近的存储节点中。其中,数据块与节点之间的距离是指数据块与节点之间的逻辑距离,在存储节点多于需要存储的数据块的情况下,通过该逻辑距离,可以公平地确定数据块存储在哪个存储节点上,使得数据块分布相对均匀,而不会出现一些存储节点存储大部分数据块,而另一些节点不存储数据块的情况。基于逻辑距离均匀存储的方式,使得数据块存储相对均匀,因此,在数据定位时能够较快定位数据块所在存储节点,以及在读取数据块时也能够较快读取数据块所在存储节点。在具体实现时,针对任意一个数据块,客户端可以将该数据块的哈希值与各个存储节点身份标识分别进行异或,将异或后的数值作为该数据块与各节点之间的距离,基于此,数值最小的存储节点即为与该数据块距离最近的节点,客户端可以将该数据块存储在该存储节点上。
在将文件对应的数据块存储于存储节点后,客户端还可以通过文件相关的哈希值校验文件对应的多个数据块是否发生变化,以保障文件的安全性。客户端可以周期性地检查文件是否发生变化,也可以在用户触发相应检查操作之后,响应于用户触发的检查操作,再检查文件是否发生变化。在具体实现时,客户端根据区块链网络中存储的文件相关的哈希值,校验文件对应的多个数据块是否发生变化;若检验出文件对应的多个数据块中的某个数据块发生变化,则从存储节点中获取文件对应的未发生变化的数据块,并利用纠删码算法和未发生变化的数据块,解码得到所述某个数据块的原始数据并重新进行存储。
上述实施例提供的文件处理方法主要是对文件进行存储,基于此,本申请实施例还提供了另一种文件处理方法,本实施例与上述实施例的区别在于,还增加了如何获取已存储文件的步骤。具体的,针对存储文件的方式不同,本申请实施例提供了两种获取已存储文件的实现方式。
一种实现方式为,若区块链网络中存储所述文件的文件索引、所述多个数据块中每个数据块各自的域名存储地址以及所述文件相关的哈希值,则参见图5所示的方法,通过该方法来获取已存储的指定文件,具体为:
S501:根据指定文件的文件索引从所述区块链网络中,获取所述指定文件对应的多个数据块中每个数据块各自的域名存储地址。
在本实施例中,对文件进行存储时,不仅存储了文件对应的数据块,还在区块链网络中存储了文件的文件索引以及每个数据块各自的存储地址。因此,客户端可以根据指定文件的文件索引从区块链网络中,获取指定文件对应的多个数据块中每个数据块各自的存储地址。
其中,指定文件是指定的待搜索的文件。在具体实现时,用户可以触发针对指定文件的文件搜索操作,客户端响应于该操作,根据指定文件的文件索引从区块链网络中获取指定文件对应的多个数据块中每个数据块各自的存储地址。
S502:根据所述域名存储地址至少从所述分布式文件系统中,获取所述指定文件对应的多个数据块。
由于文件对应的多个数据块至少有一个存储在分布式文件系统中,其具体包括两种情况,一种为所有的数据块均存储在分布式文件系统中,另一种为部分数据块存储在分布式文件系统中,剩余数据块存储在区块链网络汇总。针对第一种情况,客户端根据存储地址从分布式文件系统中获取指定文件对应的数据块,针对第二种情况,客户端根据存储地址从分布式文件系统以及区块链网络中获取指定文件对应的数据块。
S503:根据所述纠删码算法解码所述指定文件对应的所述多个数据块,得到所述指定文件的原始数据。
指定文件对应的多个数据块包括指定文件对应的原始数据块以及校验块,上述数据块是采用纠删码算法对指定文件进行编码得到的,因此客户端可以根据纠删码算法对指定文件对应的多个数据块进行解码,得到指定文件的原始数据。可以理解,客户端采用纠删码算法对指定文件进行编码时,通常是采用矩阵运算实现的,基于此,在对编码得到的数据块解码时,可以执行上述矩阵运算的逆运算,得到指定文件的原始数据。
可以理解的是,指定文件的数据块在存储后,存在被篡改或删除的风险,基于此,客户端还可以根据区块链网络中存储的指定文件相关的哈希值,校验指定文件的原始数据是否被篡改。
在具体实现时,客户端可以根据指定文件的数据块的内容计算该数据块的哈希值,将其与区块链网络中存储的指定文件相关的哈希值比较,以确定数据块是否被篡改或删除,进而确定指定文件的原始数据是否被篡改。
其中,若哈希值相同,则表明该数据块未被篡改或删除,当所有数据块的哈希值均与区块链网络中存储的哈希值相同时,则表明指定文件的原始数据未被篡改;若至少有一个数据块的哈希值不同,则表明指定文件的原始数据被篡改或删除。若指定文件的原始数据被篡改,则客户端可以利用纠删码算法和未被篡改的数据块,解码得到被篡改的数据块的原始数据。
需要说明的是,当采用的纠删码算法为LRC算法时,若指定文件的原始数据篡改,还可以判断哪个分区的数据块被篡改或被删除,在确定出分区后,只需根据该分区对应的数据块以及局部校验块即可重建该被篡改或删除的数据块,提高了重建效率。
另一种实现方式为,若区块链网络中存储有所述文件的文件索引以及与所述文件索引对应的所述多个数据块中每个数据块各自的哈希值,则参见图6所示的方法,通过该方法来获取已存储的指定文件,具体为:
S601:根据指定文件的文件索引从所述区块链网络中,获取所述指定文件对应的多个数据块中每个数据块各自的哈希值。
当文件以基于内容的地址进行存储时,文件对应的各个数据块的存储地址即为文件的哈希值。在对文件的数据块进行存储时,还将在区块链网络中存储文件的文件索引以及与文件索引对应的多个数据块中每个数据块的哈希值。针对指定文件,客户端可以根据指定文件的文件索引获取指定文件对应的多个数据块中每个数据块各自的哈希值。
S602:根据所述哈希值至少从所述分布式文件系统中,获取所述指定文件对应的多个数据块。
由于在对文件存储时,是以哈希值作为存储地址的,因此,客户端可以根据哈希值从分布式文件系统中,或者从分布式文件系统和区块链网络中,获取指定文件对应的多个数据块。
需要说明的是,若指定文件的原始数据未被篡改或删除,则客户端可以根据基于哈希值获得指定文件对应的所有数据块,若指定文件的原始数据被篡改或删除,将导致被篡改或删除的原始数据对应的数据块的哈希值发生变化,依据区块链网络中存储的哈希值无法搜索到该被篡改或删除的数据块。
S603:根据所述纠删码算法解码所述指定文件对应的所述多个数据块,得到所述指定文件的原始数据。
当指定文件的原始数据未被篡改或删除时,客户端根据所述纠删码算法,直接解码所述指定文件对应的所述多个数据块,得到所述指定文件的原始数据。
当指定文件的原始数据被篡改或删除时,客户端先根据纠删码算法恢复被被篡改或删除的数据块,然后对指定文件对应的多个数据块解码,得到指定文件的原始数据。
可见,本申请实施例提供的上述文件处理方法,采用了区块链网络与链外式分布存储系统联合存储的方式,在区块链网络中存储文件索引、每个数据块各自的存储地址以及文件相关的哈希值,将多个数据块全部或部分存储于分布式文件系统中的存储节点,一方面能够降低区块链网络的存储压力,通过引入分布式文件系统,扩展了存储容量,以满足数据量快速增长的业务需求,另一方面,基于这种文件存储机制,能够保证文件的高可靠性性和安全性,基于此,能够快速有效地获取所需的已存储文件,方便文件读取。
以上通过实施例对本申请提供的文件处理方法进行了解释说明,与上述文件处理方法相对应的,本申请实施例还提供了一种文件处理装置,接下来,对该装置进行解释说明,参见图7,该装置包括:
生成模块710,用于利用纠删码算法将文件编码生成多个数据块,所述多个数据块包括文件的原始数据块以及校验块;
存储模块720,用于将所述多个数据块存储于至少两个存储节点,所述存储节点至少包括分布式文件系统中的存储节点;其中,一个数据块只被存储一次;以及,在区块链网络中存储所述文件的文件索引、所述多个数据块中每个数据块各自的存储地址以及所述文件相关的哈希值。
可选的,所述存储模块720具体用于:
将所述多个数据块全部存储于所述分布式文件系统中的至少两个存储节点。
可选的,所述存储模块720具体用于:
将所述多个数据块中的至少一个数据块存储于所述区块链网络中的存储节点中,并且,将所述多个数据块中除去所述至少一个数据块之外的其余数据块存储于所述分布式文件系统中的存储节点中。
可选的,所述校验块包括:全局校验块和局部校验块;
所述存储模块720具体用于:
至少将所述多个数据块中的所述全局校验块存储于所述区块链网络中的存储节点中。
可选的,所述生成模块710具体用于:
利用纠删码算法将文件编码生成N个数据块,所述N为所述区块链网络的节点个数,所述N为大于等于2的正整数;其中,所述N个数据块中包括N1个原始数据块和N2个校验块,其中,N1与N2的和值为N,且N2是所述区块链网络所采用的共识算法的容错系数和所述区块链网络的节点个数的乘积。
可选的,所述分布式文件系统基于内容的地址存储数据块,所述内容的地址是基于数据块内容确定的哈希值;
则所述存储模块720具体用于:
在区块链网络中存储所述文件的文件索引以及与所述文件索引对应的所述多个数据块中每个数据块各自的哈希值。
可选的,所述存储模块720具体用于:
在区块链网络中存储所述文件的文件索引、所述多个数据块中每个数据块各自的域名存储地址以及所述多个数据块中每个数据块各自的哈希值;或者,
在区块链网络中存储所述文件的文件索引、所述多个数据块中每个数据块各自的域名存储地址以及所述文件的哈希值。
可选的,所述存储模块720具体用于:
采用梅克尔树结构在区块链网络中存储所述多个数据块中每个数据块各自的哈希值。
可选的,所述装置还包括第一校验模块和第一解码模块;
所述第一校验模块,用于根据所述区块链网络中存储的所述文件相关的哈希值,校验所述文件对应的所述多个数据块是否发生变化;
所述第一解码模块,用于若检验出所述多个数据块中的某个数据块发生变化,则从所述存储节点中获取所述文件对应的未发生变化的数据块,并利用所述纠删码算法和所述未发生变化的数据块,解码得到所述某个数据块的原始数据以使得所述存储模块720重新对所述原始数据进行存储。
可选的,所述存储模块720具体用于:
根据所述多个数据块中每个数据块的哈希值和存储节点身份标识,确定每个数据块与节点之间的距离;
将每个数据块存储在与其距离最近的存储节点中。
可选的,所述区块链网络中的存储节点和所述分布式文件系统中的存储节点部署在同一设备中。
可选的,所述装置还包括获取模块和第二解码模块;
所述第一获取模块,用于若区块链网络中存储所述文件的文件索引、所述多个数据块中每个数据块各自的域名存储地址以及所述文件的哈希值,根据指定文件的文件索引从所述区块链网络中,获取所述指定文件对应的多个数据块中每个数据块各自的域名存储地址;根据所述域名存储地址至少从所述分布式文件系统中,获取所述指定文件对应的多个数据块;
所述第二解码模块,用于根据所述纠删码算法解码所述指定文件对应的所述多个数据块,得到所述指定文件的原始数据。
可选的,所述装置还包括第二校验模块;
所述第二校验模块,用于根据所述区块链网络中存储的所述指定文件相关的哈希值,校验所述指定文件的原始数据是否被篡改;
则所述第二加密模块,具体用于:若是,则利用所述纠删码算法和未被篡改的数据块,解码得到所述被篡改的数据块的原始数据。
可选的,所述装置还包括第二获取模块和第三解码模块;
所述第二获取模块,用于若所述区块链网络中存储有所述文件的文件索引以及与所述文件索引对应的所述多个数据块中每个数据块各自的哈希值,根据指定文件的文件索引从所述区块链网络中,获取所述指定文件对应的多个数据块中每个数据块各自的哈希值;根据所述哈希值至少从所述分布式文件系统中,获取所述指定文件对应的多个数据块;
所述第三解码模块,用于根据所述纠删码算法解码所述指定文件对应的所述多个数据块,得到所述指定文件的原始数据。
可选的,所述分布式文件系统为星际文件系统。
可选的,所述分布式文件系统的存储节点个数与所述区块链网络的存储节点个数相同。
以上为本申请实施例提供的一种文件处理装置,该装置基于纠删码算法对文件进行处理得到多个数据块,然后将多个数据块存储于至少两个存储节点,当某一原始数据块被篡改或丢失时,可以通过其他未被篡改的原始数据块以及校验块恢复该原始数据块,与复制副本的存储方式相比,该装置将每个数据块仅存储一次,大幅降低了数据冗余度,实现以更小的数据冗余度获得更高数据可靠性,提高了存储空间利用率。并且,该装置采用了区块链网络与链外式分布存储系统联合存储的方式,在区块链网络中存储文件索引、每个数据块各自的存储地址以及文件相关的哈希值,将多个数据块全部或部分存储于分布式文件系统中的存储节点,降低了区块链网络的存储压力,通过引入分布式文件系统,扩展了存储容量。
基于本申请实施例提供的上述文件处理装置,本申请实施例还提供了一种文件处理设备,该文件处理设备为终端设备,下面结合图8对该终端设备的硬件结构作示例性说明,如图8所示,为了便于说明,仅示出了与本申请实施例相关的部分,具体技术细节未揭示的,请参照本申请实施例方法部分。该终端设备可以为包括手机、平板电脑、个人数字助理(英文全称:Personal Digital Assistant,英文缩写:PDA)、销售终端(英文全称:Point ofSales,英文缩写:POS)、车载电脑等任意终端设备,以终端为手机为例:
图8示出的是与本申请实施例提供的终端相关的手机的部分结构的框图。参考图8,手机包括:射频(英文全称:Radio Frequency,英文缩写:RF)电路810、存储器820、输入单元830、显示单元840、传感器850、音频电路860、无线保真(英文全称:wireless fidelity,英文缩写:WiFi)模块870、处理器880、以及电源890等部件。本领域技术人员可以理解,图8中示出的手机结构并不构成对手机的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图8对手机的各个构成部件进行具体的介绍:
RF电路810可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器880处理;另外,将设计上行的数据发送给基站。通常,RF电路810包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(英文全称:LowNoise Amplifier,英文缩写:LNA)、双工器等。此外,RF电路810还可以通过无线通信与网络和其他设备通信。上述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(英文全称:Global System of Mobile communication,英文缩写:GSM)、通用分组无线服务(英文全称:General Packet Radio Service,GPRS)、码分多址(英文全称:CodeDivision Multiple Access,英文缩写:CDMA)、宽带码分多址(英文全称:Wideband CodeDivision Multiple Access,英文缩写:WCDMA)、长期演进(英文全称:Long TermEvolution,英文缩写:LTE)、电子邮件、短消息服务(英文全称:Short Messaging Service,SMS)等。
存储器820可用于存储软件程序以及模块,处理器880通过运行存储在存储器820的软件程序以及模块,从而执行手机的各种功能应用以及数据处理。存储器820可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器820可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
输入单元830可用于接收输入的数字或字符信息,以及产生与手机的用户设置以及功能控制有关的键信号输入。具体地,输入单元830可包括触控面板831以及其他输入设备832。触控面板831,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板831上或在触控面板831附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板831可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器880,并能接收处理器880发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板831。除了触控面板831,输入单元830还可以包括其他输入设备832。具体地,其他输入设备832可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元840可用于显示由用户输入的信息或提供给用户的信息以及手机的各种菜单。显示单元840可包括显示面板841,可选的,可以采用液晶显示器(英文全称:LiquidCrystal Display,英文缩写:LCD)、有机发光二极管(英文全称:Organic Light-EmittingDiode,英文缩写:OLED)等形式来配置显示面板841。进一步的,触控面板831可覆盖显示面板841,当触控面板831检测到在其上或附近的触摸操作后,传送给处理器880以确定触摸事件的类型,随后处理器880根据触摸事件的类型在显示面板841上提供相应的视觉输出。虽然在图8中,触控面板831与显示面板841是作为两个独立的部件来实现手机的输入和输入功能,但是在某些实施例中,可以将触控面板831与显示面板841集成而实现手机的输入和输出功能。
手机还可包括至少一种传感器850,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板841的亮度,接近传感器可在手机移动到耳边时,关闭显示面板841和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于手机还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路860、扬声器861,传声器862可提供用户与手机之间的音频接口。音频电路860可将接收到的音频数据转换后的电信号,传输到扬声器861,由扬声器861转换为声音信号输出;另一方面,传声器862将收集的声音信号转换为电信号,由音频电路860接收后转换为音频数据,再将音频数据输出处理器880处理后,经RF电路810以发送给比如另一手机,或者将音频数据输出至存储器820以便进一步处理。
WiFi属于短距离无线传输技术,手机通过WiFi模块870可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图8示出了WiFi模块870,但是可以理解的是,其并不属于手机的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器880是手机的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器820内的软件程序和/或模块,以及调用存储在存储器820内的数据,执行手机的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器880可包括一个或多个处理单元;优选的,处理器880可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器880中。
手机还包括给各个部件供电的电源890(比如电池),优选的,电源可以通过电源管理系统与处理器880逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
尽管未示出,手机还可以包括摄像头、蓝牙模块等,在此不再赘述。
在本申请实施例中,该终端所包括的处理器880还具有以下功能:
利用纠删码算法将文件编码生成多个数据块,所述多个数据块包括文件的原始数据块以及校验块;
将所述多个数据块存储于至少两个存储节点,所述存储节点至少包括分布式文件系统中的存储节点;其中,一个数据块只被存储一次;以及,
在区块链网络中存储所述文件的文件索引、所述多个数据块中每个数据块各自的存储地址以及所述文件相关的哈希值。
可选的,处理器880还可以用于执行本申请实施例中文件处理方法的任意一种实施方式的步骤。
本申请实施例还提供一种计算机可读存储介质,用于存储程序代码,该程序代码用于执行前述各个实施例所述的一种文件处理方法中的任意一种实施方式。
本申请实施例还提供一种包括指令的计算机程序产品,当其在计算机上运行时,使得计算机执行前述各个实施例所述的一种文件处理方法中的任意一种实施方式。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(英文全称:Read-OnlyMemory,英文缩写:ROM)、随机存取存储器(英文全称:Random Access Memory,英文缩写:RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (28)
1.一种文件处理方法,其特征在于,应用于客户端,包括:
利用纠删码算法将文件编码生成多个数据块,所述多个数据块包括文件的原始数据块以及校验块;
将所述多个数据块存储于至少两个存储节点,所述存储节点至少包括分布式文件系统中的存储节点;其中,一个数据块只被存储一次;以及,
在区块链网络中存储所述文件的文件索引、所述多个数据块中每个数据块各自的存储地址以及所述文件相关的哈希值;
所述利用纠删码算法将文件编码生成多个数据块,包括:
利用纠删码算法将文件编码生成N个数据块,所述N为所述区块链网络的节点个数,所述N为大于等于2的正整数;其中,所述N个数据块中包括N1个原始数据块和N2个校验块,其中,N1与N2的和值为N,且N2是所述区块链网络所采用的共识算法的容错系数和所述区块链网络的节点个数的乘积。
2.根据权利要求1所述的方法,其特征在于,所述将所述多个数据块存储于至少两个存储节点,包括:
将所述多个数据块全部存储于所述分布式文件系统中的至少两个存储节点。
3.根据权利要求1所述的方法,其特征在于,所述将所述多个数据块存储于至少两个存储节点,包括:
将所述多个数据块中的至少一个数据块存储于所述区块链网络中的存储节点中,并且,将所述多个数据块中除去所述至少一个数据块之外的其余数据块存储于所述分布式文件系统中的存储节点中。
4.根据权利要求3所述的方法,其特征在于,所述校验块包括:全局校验块和局部校验块;
则所述将所述多个数据块中的至少一个数据块存储于所述区块链网络中的存储节点中,包括:
至少将所述多个数据块中的所述全局校验块存储于所述区块链网络中的存储节点中。
5.根据权利要求1所述的方法,其特征在于,所述分布式文件系统基于内容的地址存储数据块,所述内容的地址是基于数据块内容确定的哈希值;
则在区块链网络中存储所述文件的文件索引、所述多个数据块中每个数据块各自的存储地址以及所述文件相关的哈希值,包括:
在区块链网络中存储所述文件的文件索引以及与所述文件索引对应的所述多个数据块中每个数据块各自的哈希值。
6.根据权利要求1所述的方法,其特征在于,所述在区块链网络中存储所述文件的文件索引、所述多个数据块中每个数据块各自的存储地址以及所述文件相关的哈希值,包括:
在区块链网络中存储所述文件的文件索引、所述多个数据块中每个数据块各自的域名存储地址以及所述多个数据块中每个数据块各自的哈希值;或者,
在区块链网络中存储所述文件的文件索引、所述多个数据块中每个数据块各自的域名存储地址以及所述文件的哈希值。
7.根据权利要求5或6所述的方法,其特征在于,所述在区块链网络中存储所述多个数据块中每个数据块各自的哈希值,包括:
采用梅克尔树结构在区块链网络中存储所述多个数据块中每个数据块各自的哈希值。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据所述区块链网络中存储的所述文件相关的哈希值,校验所述文件对应的所述多个数据块是否发生变化;
若检验出所述多个数据块中的某个数据块发生变化,则从所述存储节点中获取所述文件对应的未发生变化的数据块,并利用所述纠删码算法和所述未发生变化的数据块,解码得到所述某个数据块的原始数据并重新进行存储。
9.根据权利要求1所述的方法,其特征在于,所述将所述多个数据块存储于至少两个存储节点,包括:
根据所述多个数据块中每个数据块的哈希值和存储节点身份标识,确定每个数据块与节点之间的距离;
将每个数据块存储在与其距离最近的存储节点中。
10.根据权利要求1所述的方法,其特征在于,区块链网络中存储有所述文件的文件索引、所述多个数据块中每个数据块各自的域名存储地址以及所述文件相关的哈希值,则所述方法还包括:
根据指定文件的文件索引从所述区块链网络中,获取所述指定文件对应的多个数据块中每个数据块各自的域名存储地址;
根据所述域名存储地址至少从所述分布式文件系统中,获取所述指定文件对应的多个数据块;
根据所述纠删码算法解码所述指定文件对应的所述多个数据块,得到所述指定文件的原始数据。
11.根据权利要求10所述的方法,其特征在于,所述方法还包括:
根据所述区块链网络中存储的所述指定文件相关的哈希值,校验所述指定文件的原始数据是否被篡改;
若是,则利用所述纠删码算法和未被篡改的数据块,解码得到所述被篡改的数据块的原始数据。
12.根据权利要求1所述的方法,其特征在于,所述区块链网络中存储有所述文件的文件索引以及与所述文件索引对应的所述多个数据块中每个数据块各自的哈希值,则所述方法还包括:
根据指定文件的文件索引从所述区块链网络中,获取所述指定文件对应的多个数据块中每个数据块各自的哈希值;
根据所述哈希值至少从所述分布式文件系统中,获取所述指定文件对应的多个数据块;
根据所述纠删码算法解码所述指定文件对应的所述多个数据块,得到所述指定文件的原始数据。
13.根据权利要求1所述的方法,其特征在于,所述分布式文件系统为星际文件系统。
14.一种文件处理装置,其特征在于,包括:
生成模块,用于利用纠删码算法将文件编码生成多个数据块,所述多个数据块包括文件的原始数据块以及校验块;
存储模块,用于将所述多个数据块存储于至少两个存储节点,所述存储节点至少包括分布式文件系统中的存储节点;其中,一个数据块只被存储一次;以及,
在区块链网络中存储所述文件的文件索引、所述多个数据块中每个数据块各自的存储地址以及所述文件相关的哈希值;
所述生成模块具体用于:
利用纠删码算法将文件编码生成N个数据块,所述N为所述区块链网络的节点个数,所述N为大于等于2的正整数;其中,所述N个数据块中包括N1个原始数据块和N2个校验块,其中,N1与N2的和值为N,且N2是所述区块链网络所采用的共识算法的容错系数和所述区块链网络的节点个数的乘积。
15.根据权利要求14所述的装置,其特征在于,所述存储模块具体用于:
将所述多个数据块全部存储于所述分布式文件系统中的至少两个存储节点。
16.根据权利要求15所述的装置,其特征在于,所述存储模块具体用于:
将所述多个数据块中的至少一个数据块存储于所述区块链网络中的存储节点中,并且,将所述多个数据块中除去所述至少一个数据块之外的其余数据块存储于所述分布式文件系统中的存储节点中。
17.根据权利要求16所述的装置,其特征在于,所述校验块包括:全局校验块和局部校验块;
则所述存储模块具体用于:
至少将所述多个数据块中的所述全局校验块存储于所述区块链网络中的存储节点中。
18.根据权利要求14所述的装置,其特征在于,所述分布式文件系统基于内容的地址存储数据块,所述内容的地址是基于数据块内容确定的哈希值;
则所述存储模块具体用于:
在区块链网络中存储所述文件的文件索引以及与所述文件索引对应的所述多个数据块中每个数据块各自的哈希值。
19.根据权利要求14所述的装置,其特征在于,所述存储模块具体用于:
在区块链网络中存储所述文件的文件索引、所述多个数据块中每个数据块各自的域名存储地址以及所述多个数据块中每个数据块各自的哈希值;或者,
在区块链网络中存储所述文件的文件索引、所述多个数据块中每个数据块各自的域名存储地址以及所述文件的哈希值。
20.根据权利要求18或19所述的装置,其特征在于,所述存储模块具体用于:
采用梅克尔树结构在区块链网络中存储所述多个数据块中每个数据块各自的哈希值。
21.根据权利要求14所述的装置,其特征在于,所述装置还包括:
第一校验模块,用于根据所述区块链网络中存储的所述文件相关的哈希值,校验所述文件对应的所述多个数据块是否发生变化;
第一解码模块,用于若检验出所述多个数据块中的某个数据块发生变化,则从所述存储节点中获取所述文件对应的未发生变化的数据块,并利用所述纠删码算法和所述未发生变化的数据块,解码得到所述某个数据块的原始数据并通过所述存储模块重新进行存储。
22.根据权利要求14所述的装置,其特征在于,所述存储模块具体用于:
根据所述多个数据块中每个数据块的哈希值和存储节点身份标识,确定每个数据块与节点之间的距离;
将每个数据块存储在与其距离最近的存储节点中。
23.根据权利要求14所述的装置,其特征在于,区块链网络中存储有所述文件的文件索引、所述多个数据块中每个数据块各自的域名存储地址以及所述文件相关的哈希值,所述装置还包括:
第一获取模块,用于根据指定文件的文件索引从所述区块链网络中,获取所述指定文件对应的多个数据块中每个数据块各自的域名存储地址;
第二获取模块,用于根据所述域名存储地址至少从所述分布式文件系统中,获取所述指定文件对应的多个数据块;
第二解码模块,用于根据所述纠删码算法解码所述指定文件对应的所述多个数据块,得到所述指定文件的原始数据。
24.根据权利要求14所述的装置,其特征在于,所述装置还包括:
第二校验模块,用于根据所述区块链网络中存储的指定文件相关的哈希值,校验所述指定文件的原始数据是否被篡改;
第三解码模块,用于若是,则利用所述纠删码算法和未被篡改的数据块,解码得到所述被篡改的数据块的原始数据。
25.根据权利要求14所述的装置,其特征在于,所述区块链网络中存储有所述文件的文件索引以及与所述文件索引对应的所述多个数据块中每个数据块各自的哈希值,所述装置还包括:
第三获取模块,用于根据指定文件的文件索引从所述区块链网络中,获取所述指定文件对应的多个数据块中每个数据块各自的哈希值;
第四获取模块,用于根据所述哈希值至少从所述分布式文件系统中,获取所述指定文件对应的多个数据块;
第四解码模块,用于根据所述纠删码算法解码所述指定文件对应的所述多个数据块,得到所述指定文件的原始数据。
26.根据权利要求14所述的装置,其特征在于,所述分布式文件系统为星际文件系统。
27.一种文件处理设备,其特征在于,所述设备包括处理器以及存储器:
所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;
所述处理器用于根据所述程序代码中的指令执行权利要求1至13任一项所述的文件处理方法。
28.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质用于存储程序代码,所述程序代码用于执行权利要求1至13任一项所述的文件处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811349505.3A CN109491968B (zh) | 2018-11-13 | 2018-11-13 | 一种文件处理方法、装置、设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811349505.3A CN109491968B (zh) | 2018-11-13 | 2018-11-13 | 一种文件处理方法、装置、设备及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109491968A CN109491968A (zh) | 2019-03-19 |
CN109491968B true CN109491968B (zh) | 2021-01-22 |
Family
ID=65695811
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811349505.3A Active CN109491968B (zh) | 2018-11-13 | 2018-11-13 | 一种文件处理方法、装置、设备及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109491968B (zh) |
Families Citing this family (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110032545A (zh) * | 2019-03-27 | 2019-07-19 | 远光软件股份有限公司 | 基于区块链的文件存储方法、系统及电子设备 |
CN109947375B (zh) * | 2019-04-04 | 2021-05-14 | 江南大学 | 一种基于分区处理共识算法的分布式存储系统优化方法 |
CN110061838B (zh) * | 2019-04-28 | 2022-07-19 | 广州大学 | 一种dns资源记录的去中心化存储系统及其实现方法 |
CN110288445B (zh) * | 2019-06-28 | 2024-03-05 | 杭州复杂美科技有限公司 | 去中心化存储方法、设备和存储介质 |
CN110300173A (zh) * | 2019-06-28 | 2019-10-01 | 杭州复杂美科技有限公司 | 去中心化数据存储方法、验证方法、设备和存储介质 |
CN110288346A (zh) * | 2019-06-28 | 2019-09-27 | 杭州复杂美科技有限公司 | 区块链分布式存储下载方法、设备和存储介质 |
CN110321734A (zh) * | 2019-07-11 | 2019-10-11 | 政采云有限公司 | 一种文件校验方法及装置 |
EP3794532B1 (en) | 2019-08-01 | 2021-11-03 | Advanced New Technologies Co., Ltd. | Shared blockchain data storage based on error correction code |
WO2021016998A1 (en) | 2019-08-01 | 2021-02-04 | Advanced New Technologies Co., Ltd. | Shared blockchain data storage based on error correction code |
WO2021017009A1 (en) | 2019-08-01 | 2021-02-04 | Advanced New Technologies Co., Ltd. | Shared blockchain data storage based on error correction code |
CN110471987B (zh) * | 2019-08-09 | 2023-02-21 | 全链通有限公司 | 数据存储方法、设备及计算机可读存储介质 |
EP3682342B1 (en) * | 2019-09-11 | 2021-08-18 | Advanced New Technologies Co., Ltd. | Shared blockchain data storage based on error correction coding in trusted execution environments |
EP3695331B1 (en) * | 2019-09-11 | 2023-02-22 | Advanced New Technologies Co., Ltd. | Shared blockchain data storage based on error correction coding in trusted execution environments |
KR102412024B1 (ko) | 2019-10-15 | 2022-06-22 | 알리페이 (항저우) 인포메이션 테크놀로지 씨오., 엘티디. | 인코딩된 블록체인 데이터의 인덱싱 및 복구 |
CN112749145A (zh) * | 2019-10-29 | 2021-05-04 | 伊姆西Ip控股有限责任公司 | 存储和访问数据的方法、设备和计算机程序产品 |
WO2020035087A2 (en) | 2019-11-06 | 2020-02-20 | Alipay (Hangzhou) Information Technology Co., Ltd. | Consenus of shared blockchain data storage based on error correction code |
CN111026580A (zh) * | 2019-11-29 | 2020-04-17 | 浪潮电子信息产业股份有限公司 | 一种数据读取方法、装置、设备及存储介质 |
CN111061698B (zh) * | 2019-12-30 | 2023-09-05 | 语联网(武汉)信息技术有限公司 | 以太坊合约数据的存储方法及装置 |
CN113360315A (zh) * | 2020-03-06 | 2021-09-07 | 科大国盾量子技术股份有限公司 | 一种数据中心 |
CN111291414A (zh) * | 2020-03-11 | 2020-06-16 | 深圳市网心科技有限公司 | 数据存储方法及装置、计算机装置及存储介质 |
CN111400373B (zh) * | 2020-03-16 | 2021-05-28 | 上海简苏网络科技有限公司 | 一种在联盟链中实现区块信息可视化的方法和装置 |
US11709609B2 (en) * | 2020-03-27 | 2023-07-25 | Via Technologies, Inc. | Data storage system and global deduplication method thereof |
CN111460436B (zh) * | 2020-04-02 | 2023-07-28 | 广州市品高软件股份有限公司 | 一种基于区块链的非结构化数据操作方法和系统 |
CN111541753B (zh) * | 2020-04-16 | 2024-02-27 | 深圳市迅雷网络技术有限公司 | 区块链数据的分布式存储系统、方法、计算机设备及介质 |
CN111580835B (zh) * | 2020-04-28 | 2023-09-22 | 中国银行股份有限公司 | Ipfs节点安装方法及装置 |
CN111818124B (zh) * | 2020-05-29 | 2022-09-02 | 平安科技(深圳)有限公司 | 数据存储方法、装置、电子设备及介质 |
CN111639054B (zh) * | 2020-05-29 | 2023-11-07 | 中国人民解放军国防科技大学 | 一种海洋模式与资料同化的数据耦合方法、系统及介质 |
CN111885107B (zh) * | 2020-06-17 | 2023-07-18 | 万高信息技术(珠海)有限公司 | 一种基于区块链的可信伪中心存储系统 |
WO2022000324A1 (zh) * | 2020-06-30 | 2022-01-06 | 深圳市大疆创新科技有限公司 | 数据编码方法、数据解码方法、数据处理方法、编码器、解码器、系统、可移动平台与计算机可读介质 |
CN111526218B (zh) | 2020-07-03 | 2020-09-22 | 支付宝(杭州)信息技术有限公司 | 联盟链中的共识方法和系统 |
KR20220014095A (ko) | 2020-07-28 | 2022-02-04 | 삼성에스디에스 주식회사 | 블록체인 기반의 데이터 분산 관리 방법 및 이를 위한 장치 |
CN111625874B (zh) * | 2020-07-30 | 2020-11-03 | 杭州智诚惠通科技有限公司 | 一种基于区块链技术的云治超数据防篡改方法 |
CN112261388B (zh) * | 2020-09-07 | 2023-08-01 | 中国电影器材有限责任公司 | 一种卫星传送数字电影包的冗余恢复方法、装置和系统 |
CN112347040A (zh) * | 2020-09-30 | 2021-02-09 | 宇龙计算机通信科技(深圳)有限公司 | 文件管理方法、装置、存储介质及终端 |
CN112256472A (zh) * | 2020-10-20 | 2021-01-22 | 平安科技(深圳)有限公司 | 分布式数据调取方法、装置、电子设备及存储介质 |
CN112287026A (zh) * | 2020-10-28 | 2021-01-29 | 昆明理工大学 | 一种基于区块链与ipfs的数据存储方法 |
CN112214456B (zh) * | 2020-11-05 | 2022-05-10 | 深圳市瀚兰区块链地产有限公司 | 一种房产数据处理方法、装置和电子设备 |
CN112860476A (zh) * | 2021-02-19 | 2021-05-28 | 上海交通大学 | 一种基于视频分层存储的近似纠删码编码方法及装置 |
CN112822224B (zh) * | 2021-04-19 | 2021-06-22 | 国网浙江省电力有限公司 | 一种用于财务数据查询的安全传输方法 |
CN116579025A (zh) * | 2021-04-20 | 2023-08-11 | 支付宝(杭州)信息技术有限公司 | 一种文件存证方法、装置及设备 |
CN113535661A (zh) * | 2021-07-30 | 2021-10-22 | 天津光电通信技术有限公司 | 基于区块链技术的分布式共享文件管理方法及装置 |
CN114594911B (zh) * | 2022-03-13 | 2024-03-29 | 西安电子科技大学 | 基于链下纠删码分布式存储的区块链数据存储系统及方法 |
CN116010160A (zh) * | 2023-03-09 | 2023-04-25 | 安超云软件有限公司 | 分布式文件系统的纠删码数据分布的方法及应用 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104461781B (zh) * | 2014-12-01 | 2017-10-31 | 华中科技大学 | 一种基于纠删码的数据块重建方法 |
CN107844268B (zh) * | 2015-06-04 | 2021-09-14 | 华为技术有限公司 | 一种数据分发方法、数据存储方法、相关装置以及系统 |
JP6533771B2 (ja) * | 2016-11-15 | 2019-06-19 | 富士通株式会社 | 通信方法、装置、及びプログラム |
CN107273410B (zh) * | 2017-05-03 | 2020-07-07 | 上海点融信息科技有限责任公司 | 基于区块链的分布式存储 |
CN108062202A (zh) * | 2017-12-15 | 2018-05-22 | 中链科技有限公司 | 一种文件分块存储方法及系统 |
CN108769150B (zh) * | 2018-05-14 | 2021-11-12 | 百度在线网络技术(北京)有限公司 | 区块链网络的数据处理方法、装置、集群节点和存储介质 |
-
2018
- 2018-11-13 CN CN201811349505.3A patent/CN109491968B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN109491968A (zh) | 2019-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109491968B (zh) | 一种文件处理方法、装置、设备及计算机可读存储介质 | |
US10073652B2 (en) | Performance optimized storage vaults in a dispersed storage network | |
US10241695B2 (en) | Optimizing rebuilds when using multiple information dispersal algorithms | |
US9971538B2 (en) | Load balancing and service differentiation within a dispersed storage network | |
US20170286225A1 (en) | Coordination protocol between dispersed storage processing units and rebuild modules | |
US10652350B2 (en) | Caching for unique combination reads in a dispersed storage network | |
US10296263B2 (en) | Dispersed bloom filter for determining presence of an object | |
US11188665B2 (en) | Using internal sensors to detect adverse interference and take defensive actions | |
US10394630B2 (en) | Estimating relative data importance in a dispersed storage network | |
US20180239701A1 (en) | Zone storage - quickly returning to a state of consistency following an unexpected event | |
US10298684B2 (en) | Adaptive replication of dispersed data to improve data access performance | |
US20140337296A1 (en) | Techniques to recover files in a storage network | |
US11354273B1 (en) | Managing usable storage space in distributed file systems | |
US10324657B2 (en) | Accounting for data whose rebuilding is deferred | |
US20170161205A1 (en) | Abstracting namespace mapping in a dispersed storage network through multiple hierarchies | |
US10506045B2 (en) | Memory access using deterministic function and secure seed | |
US20220261167A1 (en) | Storage Pool Tiering in a Storage Network | |
US11226980B2 (en) | Replicating containers in object storage using intents | |
US10223033B2 (en) | Coordinating arrival times of data slices in a dispersed storage network | |
US10095582B2 (en) | Partial rebuilding techniques in a dispersed storage unit | |
US20230176949A1 (en) | Managing Copy Revisions in a Distributed Storage System | |
US10678639B2 (en) | Quasi-error notifications in a dispersed storage network | |
US20220159072A1 (en) | Performance based access in a storage network | |
US10402270B2 (en) | Deterministically determining affinity for a source name range | |
US10423491B2 (en) | Preventing multiple round trips when writing to target widths |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20200821 Address after: 11, building 310053, Hang Seng tower, 3588 Jiangnan Avenue, Hangzhou, Zhejiang, Binjiang District Applicant after: HUNDSUN TECHNOLOGIES Inc. Address before: 310053 323, room 3, Hengsheng building, 3588 Jiangnan Road, Binjiang District, Hangzhou, Zhejiang. Applicant before: ZHEJIANG JINGTENG NETWORK TECHNOLOGY Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |