一种基于IPFS集群的数据灾备方法与设备与流程

文档序号:25481166发布日期:2021-06-15 21:40阅读:245来源:国知局
一种基于IPFS集群的数据灾备方法与设备与流程

本申请涉及信息技术领域,尤其涉及一种基于ipfs集群的数据灾备技术。



背景技术:

数据灾备全称为数据灾难备份,是指为防止出现操作失误或系统故障导致数据丢失,而将系统全部或部分数据集合,从应用主机的硬盘或阵列复制到其他存储介质的过程。目前的方案一般是将本地备份数据远程复制到同城或异地容灾中心,当本地备份数据丢失或故障时,再从灾备中心进行数据恢复。

无论是同城容灾还是异地容灾,其本质问题都是如何应对分布式存储系统中的节点故障。为应对该问题,现有的技术方案主要有多副本技术方案和纠删码技术方案。然而,现有的技术方案存在如下缺点:(1)在多副本技术方案中,副本复制粒度太大;(2)在纠删码技术方案中,纠删码复制读、写、更新操作开销太大;(3)大规模存储系统的故障检测时间和恢复时间过长;(4)灾难恢复不够智能和灵活。



技术实现要素:

本申请的一个目的是提供一种基于ipfs集群的数据灾备方法与设备。

根据本申请的一个方面,提供了一种基于ipfs集群的数据灾备方法,其中,所述方法包括:

启动多个ipfs节点作为灾备节点,将该多个灾备节点组织成分布式灾备集群;

基于原始文件生成备份文件,将所述备份文件同步到所述灾备节点,通过ipfs为每个所述备份文件生成对应的cid,通过pin操作将所述备份文件的cid加入到pinset数据库;

所述分布式灾备集群中的其他灾备节点通过共识算法,把所述pinset数据库的更新数据同步到本节点持久化存储中。

根据本申请的另一个方面,还提供了一种计算设备,其中,该设备包括用于存储计算机程序指令的存储器和用于执行计算机程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发所述设备执行所述的基于ipfs集群的数据灾备方法。

根据本申请的又一个方面,还提供了一种计算机可读介质,其上存储有计算机程序指令,所述计算机可读指令可被处理器执行以实现所述的基于ipfs集群的数据灾备方法。

本申请提供的方案中,先启动多个ipfs节点作为灾备节点,将该多个灾备节点组织成分布式灾备集群;再基于原始文件生成备份文件,将所述备份文件同步到所述灾备节点,通过ipfs为每个所述备份文件生成对应的cid,通过pin操作将所述备份文件的cid加入到pinset数据库;然后所述分布式灾备集群中的其他灾备节点通过共识算法,把所述pinset数据库的更新数据同步到本节点持久化存储中。本申请可以高效灵活地实现数据灾备,解决了现有技术方案对同城或异地容灾中心依赖大,对带宽和存储容量的要求高,以及单点故障、防御ddos攻击差等一系列问题。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其他特征、目的和优点将会变得更明显:

图1是根据本申请实施例的一种基于ipfs集群的数据灾备方法流程图;

图2(a)~(c)是根据本申请实施例的一种链式数据存储方式示意图;

图3(a)~(c)是根据本申请实施例的一种利用分布式哈希表实现数据分布化组织的示意图。

附图中相同或相似的附图标记代表相同或相似的部件。

具体实施方式

下面结合附图对本申请作进一步详细描述。

在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体,可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的装置或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。

本申请实施例提供了一种基于ipfs(interplanetaryfilesystem,星际文件系统)集群(cluster)的数据灾备方法,可以高效灵活地实现数据灾备,将本地备份数据远程复制到同城或异地容灾中心。本申请实施例解决了现有技术方案对同城或异地容灾中心依赖大,对带宽和存储容量的要求高,以及单点故障、防御ddos攻击差等一系列问题。

其中,ipfscluster是一个分布式应用程序,可作为ipfs对等节点的辅助管理工具,维护集群全局pinset并智能地将其项目分配给ipfs对等节点。ipld是ipfs的组件,它的核心是基于dag结构的merkledag。merkledag由节点和链接组成,节点存储数据及数据的下级链接关系,链接存储的是数据的哈希(hash)值。

在实际场景中,执行该方法的设备可以是用户设备、网络设备或者用户设备与网络设备通过网络相集成所构成的设备。其中,所述用户设备包括但不限于智能手机、平板电脑、个人计算机(pc)等终端设备,所述网络设备包括但不限于网络主机、单个网络服务器、多个网络服务器集或基于云计算的计算机集合等实现。在此,云由基于云计算(cloudcomputing)的大量主机或网络服务器构成,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个虚拟计算机。

图1是根据本申请实施例的一种基于ipfs集群的数据灾备方法流程图,该方法包括步骤s101、步骤s102和步骤s103。

步骤s101,启动多个ipfs节点作为灾备节点,将该多个灾备节点组织成分布式灾备集群。

其中,该多个灾备节点包括本地灾备节点和多个同城或异地或云上灾备节点。在此,可以利用ipfscluster将该多个灾备节点组织成一个分布式灾备集群,此集群没有中心化的服务器,所有的灾备节点都是对等的。任何一个灾备节点都可以发起pin操作来新增或删除指定备份文件。

在一些实施例中,如图2(a)~(c)所示,所述方法还包括:通过链式数据存储方式存储所有文件。

例如,链式数据可以通过目录的方式形成“链”接。大文件可以分成小文件,在切分的过程中,文件过大的情况下,引入中间层,即多级目录的形式。在此,链式数据存储方式是一种底层通用方式,所有数据(包括原始数据和备份数据)的存储都采用链式数据存储方式。

基于链式数据存储方式,每个文件都会被切分成分片的形式存储,在构建merkle树的过程中,叶子节点就是分片,那么叶子节点数量和分片大小决定了最大文件大小,过大的文件会被切分,这样需要切分的文件称为“大文件”。例如,可以规定分片大小为128m,规定叶子节点数量为128,也规定了merkle树的层级为8,也就决定了文件阈值大小为128*128m。超过128*128m的文件都会以如图2(c)所示的多级目录存储。其中,merkle树的层级计算方式为:128->64->32->16->8->4->2->1,共8层。

在一些实施例中,所述链式数据存储方式包括:将文件切分为多个分片,为每个分片生成对应的哈希值,通过多个ipld对象保存对应分片的哈希值,将所述ipld对象本身的哈希值存储在根id中。

例如,图2(a)示出了单个文件的链式数据存储,文件首先被切分为分片,每个分片可以生成一个哈希值,然后一个ipld对象会保存这个分片的哈希值,而这个ipld对象本身的哈希值(分片对象id),又存储在一个根id(ipld对象)中。图2(b)示出了大文件切分为多个文件的链式数据存储,即一个大文件被切分为多个小文件,其中每个小文件的存储原理与图2(a)类似。图2(c)示出了对于多级目录的链式数据存储,与图2(b)所示的多个文件的链式数据存储相似,因为目录也可以看作是一个文件(ipld对象)。

步骤s102,基于原始文件生成备份文件,将所述备份文件同步到所述灾备节点,通过ipfs为每个所述备份文件生成对应的cid,通过pin操作将所述备份文件的cid加入到pinset数据库。

例如,所述分布式灾备集群中的任何一个灾备节点都可以发起pin操作来新增或删除指定备份文件。pin操作的对象为cid(contentidentifier,内容标识符),不同的备份文件由ipfs生成对应的cid。如果备份文件的内容相同,那么cid也相同,这就是ipfs的内容寻址存储方式。基于内容寻址,以切分数据块进行数据交换,可以有效地降低带宽和存储容量需求。

在一些实施例中,所述pinset数据库包括元数据信息和容灾因子信息。

例如,所述元数据信息包括:ipld对象名、哈希id、对象大小、创建时间、修改时间、权限信息、所属信息、存储服务器信息、磁盘信息、ip地址信息、加密信息等。所述容灾因子信息包括:每个ipld对象和数据本身对象的冗余份数(比如3副本、5副本),以及每个副本的存储位置,生命周期等。在此,不同的文件对象有不同的容灾因子,目录对象的容灾因子大于文件对象的容灾因子。pinset是指把一些副本pin在分布式环形哈希表的机器上,形成一个容灾集合,每个副本的冗余信息称为一个pinset。

如图3(a)~(c)所示,由于采用ipfs集群作为底层基础设施,那么文件对象与目录对象都会以pinset的方式存储在ipfs集群的节点上,而这些节点以分布式哈希表的形式进行组织。数据对象和节点之间的映射关系,存储在元数据服务器上。如图3(a)所示,如果把ipld对象映射到一个虚拟的分布式环形哈希表上,需要注意的是,目录ipld对象、文件ipld对象以及文件数据本身都是一样的文件抽象,都需要映射到该分布式环形哈希表上。而这些对象的元数据信息和复制因子,存储在一个容灾数据库(如所述pinset数据库)中。

步骤s103,所述分布式灾备集群中的其他灾备节点通过共识算法,把所述pinset数据库的更新数据同步到本节点持久化存储中。

例如,当数据备份生成后,将备份同步到本地灾备节点。本地灾备节点在接收到备份数据后,生成备份数据的cid,再通过ipfscluster的pin操作将备份数据的cid加入到全局pinset(如所述pinset数据库),所述分布式灾备集群中的其他灾备节点通过共识算法,把新增加到全局pinset的数据同步到本节点持久化存储中。

在此,数据备份阶段完成之后,还无法启动备份的功能,因为全局pinset中还没有这个备份(副本)信息,因此需要通过pin操作将副本信息上报,从而完成副本信息的注册,然后通过容灾机制可以发现并使用这个副本。根据共识算法,多个节点都可能上报副本信息,在副本信息上报的过程中节点也可能出现故障,为了维护节点之间的共识,一般都采用raft、paxos、zookeeper等共识算法。

在一些实施例中,所述方法还包括:在进行局部化故障检测时,所述分布式灾备集群中的所述灾备节点基于分布式哈希表进行故障检测,每个所述灾备节点都检测其后继节点、前驱节点和前前驱节点。在此,通过这种检测机制实现局部化故障检测,不仅可以提高检测灵敏度,还可以大大减少集群的故障检测开销。

在此,根据自免疫(容灾)恢复机制,在检测出故障事件之后,会触发局部节点对其所存储数据对象的恢复机制,恢复的原则符合数据分布化放置原则,并将新的存储信息更新到元数据库中。

在一些实施例中,所述方法还包括:当需要恢复备份数据时,从所述pinset数据库中查找并下载对应的备份文件。

例如,当出现操作失误或系统故障而造成数据损坏或丢失时,可以从本地灾备节点上恢复数据。具体地,在本地灾备节点上,可以通过ipfscluster提供的命令行工具和api接口,从全局pinset(如所述pinset数据库)中查找并下载合适的备份(副本)用于恢复损坏或丢失的数据。

在本申请实施例中,通过实现节点和数据对象之间的映射存储,再通过故障检测以及容灾恢复机制,可以从所述pinset数据库(包括所述元数据信息和所述容灾因子信息)中查找到任何一个数据的状态和位置。

在一些实施例中,可以使用命令行工具和api接口查询并下载对应的备份文件。具体地,可以先在所述pinset数据库中查找目标备份文件(例如状态符合要求的副本),以及该目标备份文件对应的服务器ip地址;然后通过直接访问该服务器ip地址,请求下载文件,在获得该服务器的响应之后,下载该目标备份文件。

在一些实施例中,所述方法还包括:若本地灾备节点丢失所有的备份数据,新建灾备节点,并将该新建的灾备节点接入到所述分布式灾备集群中,从所述分布式灾备集群中的其他灾备节点获取所述pinset数据库中的数据。

例如,如果出现本地灾备节点遭遇硬盘损坏而丢失所有备份数据的情况,可以新建灾备节点,接入到基于ipfscluster的所述分布式灾备集群中,迅速地从其他节点获取全局pinset(如所述pinset数据库)中的数据,从而快速恢复本地灾备节点。如果在本地灾备节点还未恢复前,需要备份数据,可以从所述分布式灾备集群中的节点下载相应的备份数据。

在本申请实施例中,通过实现节点和数据对象之间的映射存储,再通过故障检测以及容灾恢复机制来实现数据灾备。当有新的节点加入所述分布式灾备集群之后,就会触发映射规则和故障检测,以及容灾恢复机制,那么就会自动获取该节点需要恢复的节点数据,触发数据恢复过程。在此,数据放置规则和数据冗余规则会自动实现数据的重新分布。

综上所述,本申请实施例提供了一种基于ipfscluster的数据灾备方法,通过基于ipfscluster的分布式灾备集群高效灵活地实现数据灾备,将本地备份数据远程复制到同城或异地容灾中心。本申请实施例解决了现有技术方案对同城或异地容灾中心依赖大,对带宽和存储容量的要求高,以及单点故障、防御ddos攻击差等一系列问题。

另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。而调用本申请的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据程序指令运行的计算机设备的工作存储器中。在此,本申请的一些实施例提供了一种计算设备,该设备包括用于存储计算机程序指令的存储器和用于执行计算机程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发所述设备执行前述本申请的多个实施例的方法和/或技术方案。

此外,本申请的一些实施例还提供了一种计算机可读介质,其上存储有计算机程序指令,所述计算机可读指令可被处理器执行以实现前述本申请的多个实施例的方法和/或技术方案。

需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(asic)、通用目的计算机或任何其他类似硬件设备来实现。在一些实施例中,本申请的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,ram存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。

对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1