掌桥专利:专业的专利平台
掌桥专利
首页

一种分布式文件切片生成与存储系统及其控制方法

文献发布时间:2023-06-19 09:26:02


一种分布式文件切片生成与存储系统及其控制方法

技术领域

本发明涉及区块链技术领域,尤其涉及一种分布式文件切片生成与存储系统及其控制方法。

背景技术

传统的网络存储系统使用集中存储服务器来存储所有数据。存储服务器成为系统性能的瓶颈,也是可靠性和安全性的焦点,无法满足大规模存储应用的需求。

与目前常见的集中式存储技术不同,分布式存储技术并不是将数据存储在某个或多个特定的节点上,而是通过网络使用企业中的每台机器上的磁盘空间,并将这些分散的存储资源构成一个虚拟的存储设备,数据分散的存储在企业的各个角落。

分布式存储系统,可在多个独立设备上分发数据。

分布式网络存储系统采用可扩展的系统结构,使用多个存储服务器共享存储负载,利用位置服务器定位存储信息,不仅提高了系统的可靠性,可用性和访问效率,而且易于扩展。

在分布式存储网络系统中,文件的存储是非常重要的环节。同时文件切片后存储的数据格式也是其一个重要的难点。

然而,在分布式存储网络系统中,传统文件切片的数据格式会导致整个系统极大的存储空间消耗,节点上的文件切片被篡改,不能够很好的去重节点上存在的文件分片,以及无法通过多重Hash来唯一识别文件切片的内容。

因此,有必要提供一种新的分布式文件切片生成与存储系统及其控制方法,以解决上述技术问题。

发明内容

本发明的主要目的在于提供一种分布式文件切片生成与存储系统,旨在解决相关技术中,节点上的文件切片易被篡改,不能够很好的去重节点上存在的文件分片,以及无法通过多重Hash来唯一识别文件切片的技术问题。

为实现上述目的,本发明提供的分布式文件切片生成与存储系统,包括:

切分器模块,包括Splitter切分器;所述Splitter切分器用于根据自定义大小将文件进行切片,以生成切片文件;

DAGService模块,所述DAGService模块用于将所述切片文件定义为MerkleDAG数据结构;其中,所述MerkleDAG数据结构包括引用部分和数据部分,所述引用部分用于保存分片数据的引用,所述数据部分为本切片内容;

构建MerkleDAG数据结构,通过Layout文件布局器计算切片内容,以填充引用部分和数据部分;

Blockstore模块,所述Blockstore模块用于实现块存储,将所述数据部分内的数据编码成数据块进行操作;

Datastore模块,所述Datastore模块用于数据存储前的缓存,增加levelDB数据库和Batch缓存,以加速文件切片存储过程;

Flatfs模块,所述Flatfs模块用于所述切片文件最终写入磁盘介质,包括对磁盘容量查询和文件读写功能。

优选地,所述引用部分包括3个部分,分别是引用部分的名字、Hash和Size。

为解决上述技术问题,本发明还提供一种分布式文件切片生成与存储系统的控制方法,包括如下步骤:

S1,获取源文件相关信息,将源文件以字节流的方式发送给切分器模块;

S2,所述切分器模块拿到文件字节流,默认256KB构建文件切片,根据文件属性、大小等信息自定义构建Splitter切分器;

S3,将所述Splitter切分器传递给DAGService模块,构建MerkleDAG的数据格式;

通过Layout文件布局器拆散并组合成一个符合IPLD规范的DAG对象;

S4,所述DAGService模块会模拟生成目录对象,用来存放于文件叶子节点之间关系的映射link;

S5,初始化Datastore模块,创建batch缓存区,将构建好的DAG对象存入缓存区,加快处理读写文件的速度;

S6,将所述DAGService模块中叶子节点文件切片数据通过Blockstore模块,以protobuf序列化的方式构建文件块;

S7,将序列化后的文件块放入所述Datastore模块,所述Datastore模块分了两个库进行存储;

S8,filedb库存储的关系和映射,通过Flatfs模块与存储介质构建关联,确认切片文件存储介质,并创建存储需要的路径文件夹;

S9,文件块在写入磁盘前,会创建存储目录。

本发明提出一种分布式文件切片生成与存储方法,MerkleDAG是默克尔有向无环图的简称(Merkel Directed Acyclic Graph)。

将源文件以自定义大小进行文件切片,构建MerkleDAG的数据结构,使每个散列树由文件分片组成,每个分片的内容由其加密散列标识,确保所有文件在同一命名下,同时又不牺牲安全性。

本发明通过指定源文件,构建Splitter文件切分器,按着自定义规格大小进行文件切分,将切分好的数据切片放置Layout文件布局器进行拆分并组合成一个符合规范的MerkleDAG数据结构。

在存储上,选用每个散列树切片的加密散列标识后三位的前俩位作为存储文件夹的名字,整个散列标识加.data作为每个切片文件名字。

这种数据结构及存储方式,解决了文件内容寻址、防篡改、去重和节省存储空间大小的技术难题。

可以充分发挥MerkleDAG数据结构的优势;解决了文件内容寻址、防篡改、去重和节省存储空间大小的技术难题。在内容寻址上,使用多重Hash来唯一识别一个数据块的内容;通过检查Hash值来确认数据是否被篡改;由于内容相同的数据块Hash值是相同的,很容易去掉重复的数据,进而节省存储空间。

由于分布式存储的优点在于可扩展、低成本、高性能以及易用性等,所以原文件在存储前后数据结构的设计显得尤为重要。

附图说明

图1为本发明提供的分布式文件切片生成与存储系统的一较优实施例的架构图;

图2为本发明提供的分布式文件切片生成与存储系统的控制方法的工作流程图;

图3为数据的整体存储目录结构图。

本发明目的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

为便于理解技术方案,陈述相关技术如下。

一、MerkleTree。

Merkle Tree可以看做Hash List的泛化(Hash List可以看作一种特殊的MerkleTree,即树高为2的多叉Merkle Tree)。

在最底层,和哈希列表一样,把数据分成小的数据块,有相应地哈希和它对应。但是往上走,并不是直接去运算根哈希,而是把相邻的两个哈希合并成一个字符串,然后运算这个字符串的哈希,这样每两个哈希就结婚生子,得到了一个”子哈希“。

如果,最底层的哈希总数是单数,那到最后必然出现一个单身哈希,这种情况就直接对它进行哈希运算,所以也能得到它的子哈希。于是往上推,依然是一样的方式,可以得到数目更少的新一级哈希,最终必然形成一棵倒挂的树,到了树根的这个位置,这一代就剩下一个根哈希了,称其为Merkle Root。

在p2p网络下载网络之前,先从可信的源获得文件的Merkle Tree树根。一旦获得了树根,就可以从其他从不可信的源获取Merkle tree。通过可信的树根来检查接受到的Merkle Tree。如果Merkle Tree是损坏的或者虚假的,就从其他源获得另一个MerkleTree,直到获得一个与可信树根匹配的Merkle Tree。

二、MerkleDAG。

Merkle DAG的全称是Merkle directed acyclic graph(默克尔有向无环图)。它是在Merkle Tree的基础上构建的,与其非常相似,但不完全一样。比如Merkle DAG不需要进行树的平衡操作、非叶子节点包含数据等。Merkle DAG是IPFS的核心概念,也是Git、Bitcoin和dat等技术的核心。散列树由内容切片组成,每个切片由其加密散列标识。将指定的文件创建Merkle DAG,执行操作时,它遵循unixfs数据格式。这意味着文件被分解成切片,然后使用“链接节点”以树状结构排列,以将它们连接在一起。给定文件的“散列”实际上是DAG中根节点(最上层)的散列。

本发明提供一种分布式文件切片生成与存储系统。

请结合参阅图1,为实现上述目的,本发明的一实施例中,分布式文件切片生成与存储系统,包括:

切分器模块,包括Splitter切分器;所述Splitter切分器用于根据自定义大小将文件进行切片,以生成切片文件;

DAGService模块,所述DAGService模块用于将所述切片文件定义为MerkleDAG数据结构;其中,所述MerkleDAG数据结构包括引用部分和数据部分,所述引用部分(Link)用于保存其它的分片数据的引用,所述数据部分(Data)为本切片内容;

所述引用部分包括3个部分,分别是引用部分的名字、Hash和Size;构建MerkleDAG数据结构,通过Layout文件布局器计算切片内容,以填充引用部分(Link)和数据部分(Data)。

Blockstore模块,所述Blockstore模块用于实现块存储,将所述数据部分内的数据编码成数据块进行操作;

Datastore模块,所述Datastore模块用于数据存储前的缓存,增加levelDB数据库和Batch缓存,以加速文件切片存储过程;

Flatfs模块,所述Flatfs模块用于所述切片文件最终写入磁盘介质,包括对磁盘容量查询和文件读写功能。

请参阅图2,当分布式文件切片生成与存储系统拿到需要存储的源文件后,分布式文件切片生成与存储系统的控制方法如下:

S1,获取源文件相关信息,将源文件以字节流的方式发送给切分器模块;

S2,所述切分器模块拿到文件字节流,默认256KB构建文件切片,根据文件属性、大小等信息自定义构建Splitter切分器;

S3,将所述Splitter切分器传递给DAGService模块,构建MerkleDAG的数据格式;

通过Layout文件布局器拆散并组合成一个符合IPLD规范的DAG对象,有向无环图本身就是一棵树,这棵树的叶子节点是数据切片,每一层默认是174个节点,树是自上而下填充的,最终的树根ID即是源文件的加密散列值,用来代表这个资源;

S4,所述DAGService模块会模拟生成目录对象,用来存放于文件叶子节点之间关系的映射link;

S5,初始化Datastore模块,创建batch缓存区,将构建好的DAG对象存入缓存区,加快处理读写文件的速度;

S6,将所述DAGService模块中叶子节点文件切片数据通过Blockstore模块,以protobuf序列化的方式构建文件块;

S7,将序列化后的文件块放入所述Datastore模块,所述Datastore模块分了两个库进行存储;其中一个是leveldb用来存储关系,也就是MerkleDAG中的cid(加密散列值)和links的映射;另一个filedb库存储的是cid和rawdata的映射,将关系和数据分开存储;

这样做的目的是为了重用rawdata,关系可以任意组合,但是rawdata就一份。假设rawdata的cid=a,那么a这个cid可以出现在任意多个links集合中,但是a对应的rawdata就只有一份。

S8,filedb库存储的关系和映射,通过Flatfs模块与存储介质构建关联,确认切片文件存储介质,是系统磁盘还是第三方存储介质,并创建存储需要的路径文件夹;

S9,文件块在写入磁盘前,会创建存储目录;目录的生成规则是以cid的值后三位的前两位作为文件夹名称。例如,一个文件快的cid是CIQGVBPQVFHANPKQHAWN5PPPG7ECTMNCRLUHMKBXCSJPLW4TVQBEZXI,那么文件夹的名字就是ZX,写入磁盘的文件名就是CIQGVBPQVFHANPKQHAWN5PPPG7ECTMNCRLUHMKBXCSJPLW4TVQBEZXI.data。整体的存储目录结构如下图3所示。

本发明提出一种分布式文件切片生成与存储方法,MerkleDAG是默克尔有向无环图的简称(Merkel Directed Acyclic Graph)。

将源文件以自定义大小进行文件切片,构建MerkleDAG的数据结构,使每个散列树由文件分片组成,每个分片的内容由其加密散列标识,确保所有文件在同一命名下,同时又不牺牲安全性。

本发明通过指定源文件,构建Splitter文件切分器,按着自定义规格大小进行文件切分,将切分好的数据切片放置Layout文件布局器进行拆分并组合成一个符合规范的MerkleDAG数据结构。

在存储上,选用每个散列树切片的加密散列标识后三位的前俩位作为存储文件夹的名字,整个散列标识加.data作为每个切片文件名字。

这种数据结构及存储方式,解决了文件内容寻址、防篡改、去重和节省存储空间大小的技术难题。

可以充分发挥MerkleDAG数据结构的优势;解决了文件内容寻址、防篡改、去重和节省存储空间大小的技术难题。在内容寻址上,使用多重Hash来唯一识别一个数据块的内容;通过检查Hash值来确认数据是否被篡改;由于内容相同的数据块Hash值是相同的,很容易去掉重复的数据,进而节省存储空间。

由于分布式存储的优点在于可扩展、低成本、高性能以及易用性等,所以原文件在存储前后数据结构的设计显得尤为重要。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个计算机可读存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备进入本发明各个实施例所述的方法。

在本说明书的描述中,参考术语“一实施例”、“另一实施例”、“其他实施例”、或“第一实施例~第X实施例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料、方法步骤或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

相关技术
  • 一种分布式文件切片生成与存储系统及其控制方法
  • 一种分布式文件存储系统的权限控制方法和系统
技术分类

06120112167272