1.本发明涉及云硬盘备份领域,特别是涉及一种ceph分布式块存储的备份方法、系统及装置。
背景技术:2.目前,ceph是一种主流的开源分布式存储系统,它同时支持块存储、对象存储及文件存储三种应用场景。其中,ceph分布式块存储经常与openstack(一种主流的开源云管平台)集成,作为openstack虚拟机的系统盘或者数据盘使用。为了防止虚拟机崩溃之后用户数据丢失,需要定期将虚拟机数据进行备份,如选择将整个系统盘或者数据盘进行备份。
3.现有技术中,针对ceph分布式块存储,主要有以下两种备份方案:
4.1)基于rbd(ceph中的块设备)的备份方案,它支持将云硬盘从一个ceph集群备份到另一个ceph集群,但该备份方案要求源集群以及作为备份介质的目的集群都必须是ceph集群,并且,目的集群的应用场景必须是块存储场景,不够灵活。
5.2)基于swift接口(openstack提供的一种对象存储服务接口)的备份方案,它支持将ceph分布式块存储备份到对象存储介质上,并且,不要求源集群和作为备份介质的目的集群必须是ceph集群,相较于第一种方案,更加灵活。但是,在创建备份时,需要对整个云硬盘的数据块逐一进行校验,然后与上一次备份的数据块的校验值进行比较,以找到发生变化的数据块备份,该过程计算量较大,效率较低。
6.因此,如何提供一种解决上述技术问题的方案是本领域的技术人员目前需要解决的问题。
技术实现要素:7.本发明的目的是提供一种ceph分布式块存储的备份方法、系统及装置,采用快照对比方式找出每次备份时所有发生变化的数据块,能够快速定位发生变化的数据块,无需进行数据块校验,效率较高,且本申请采用数据块合并备份的方式可进一步提高数据备份效率;而且,本备份方案支持将块存储备份到任意对象存储介质,更加灵活。
8.为解决上述技术问题,本发明提供了一种ceph分布式块存储的备份方法,包括:
9.每隔预设备份周期,均创建ceph分布式块存储的新快照;
10.将所述新快照与上一次备份时创建的快照进行比较,以找出本次备份时所有发生变化的数据块;
11.将本次备份时所有发生变化的数据块进行合并处理,并将合并得到的数据块中的待备份数据备份到预准备的备份介质中。
12.优选地,将本次备份时所有发生变化的数据块进行合并处理,并将合并得到的数据块中的待备份数据备份到预准备的备份介质中的过程,包括:
13.将本次备份时所有发生变化的数据块的块地址信息进行合并处理,得到合并后的数据块的块地址信息;
14.根据合并后的数据块的块地址信息,将合并后的数据块中的待备份数据备份到预准备的备份介质中。
15.优选地,所述ceph分布式块存储的备份方法还包括:
16.在找出本次备份时所有发生变化的数据块之后,将本次备份时所有发生变化的数据块的块地址信息均记录到为本次备份创建的元数据文件中;其中,为本次备份创建的元数据文件的名称为本次备份的id。
17.优选地,所述ceph分布式块存储的备份方法还包括:
18.预先创建用于记录所有备份的上下游关系的备份链文件;其中,每次备份在所述备份链文件中均拥有一个包括备份id、parent及child信息的节点;
19.在新增一次备份时,在所述备份链文件中增加一个新节点,将上一次备份的节点的child改为本次备份的id,并将所述新节点的parent改为上一次备份的id,且将所述新节点的child置为空。
20.优选地,所述ceph分布式块存储的备份方法还包括:
21.在对第n次备份进行备份恢复时,根据所述备份链文件的记录内容,获取第1次到第n次备份对应的元数据文件;其中,n为正整数;
22.根据任一次备份对应的元数据文件,确定此次备份时所有发生变化的数据块的块地址信息;
23.将第1次到第n次备份时各自对应的所有发生变化的数据块的块地址信息进行合并处理,得到合并后的总数据块的块地址信息;
24.根据所述总数据块的块地址信息,从所述备份介质中读取出相应数据以恢复云硬盘中的相应数据。
25.优选地,从在对第n次备份进行备份恢复时到得到合并后的总数据块的块地址信息的过程,包括:
26.在对第n次备份进行备份恢复时,获取第n次备份对应的元数据文件;
27.根据第n次备份对应的元数据文件,确定第n次备份时所有发生变化的数据块的块地址信息;
28.根据所述备份链文件的记录内容,获取第n
‑
m次备份对应的元数据文件;其中,m的初始值为1;
29.根据第n
‑
m次备份对应的元数据文件,确定第n
‑
m次备份时所有发生变化的数据块的块地址信息;
30.将第n
‑
m次到第n次备份时各自对应的所有发生变化的数据块的块地址信息进行合并处理,得到合并后的总数据块的块地址信息;
31.将m=m+1,并根据所述备份链文件的记录内容,获取第n
‑
m次备份对应的元数据文件;
32.根据第n
‑
m次备份对应的元数据文件,确定第n
‑
m次备份时所有发生变化的数据块的块地址信息;
33.将第n
‑
m次备份的所有发生变化的数据块的块地址信息与上一次合并后的总数据块的块地址信息进行合并处理,得到新合并后的总数据块的块地址信息,并返回执行将m=m+1,并根据所述备份链文件的记录内容,获取第n
‑
m次备份对应的元数据文件的步骤,直至
将第1次到第n次备份时各自对应的所有发生变化的数据块的块地址信息进行合并处理完毕。
34.优选地,所述数据块的块地址信息为[start,end,length];其中,start表示数据块起始地址,end表示数据块结束地址,length表示数据块大小。
[0035]
为解决上述技术问题,本发明还提供了一种ceph分布式块存储的备份系统,包括:
[0036]
创建模块,用于每隔预设备份周期,均创建ceph分布式块存储的新快照;
[0037]
比较模块,用于将所述新快照与上一次备份时创建的快照进行比较,以找出本次备份时所有发生变化的数据块;
[0038]
备份模块,用于将本次备份时所有发生变化的数据块进行合并处理,并将合并得到的数据块中的待备份数据备份到预准备的备份介质中。
[0039]
优选地,所述备份模块具体用于:
[0040]
将本次备份时所有发生变化的数据块的块地址信息进行合并处理,得到合并后的数据块的块地址信息;
[0041]
根据合并后的数据块的块地址信息,将合并后的数据块中的待备份数据备份到预准备的备份介质中。
[0042]
为解决上述技术问题,本发明还提供了一种ceph分布式块存储的备份装置,包括:
[0043]
存储器,用于存储计算机程序;
[0044]
处理器,用于在执行所述计算机程序时实现上述任一种ceph分布式块存储的备份方法的步骤。
[0045]
本发明提供了一种ceph分布式块存储的备份方法,每隔预设备份周期,均创建ceph分布式块存储的新快照;将新快照与上一次备份时创建的快照进行比较,以找出本次备份时所有发生变化的数据块;将本次备份时所有发生变化的数据块进行合并处理,并将合并得到的数据块中的待备份数据备份到预准备的备份介质中。可见,本申请采用快照对比方式找出每次备份时所有发生变化的数据块,能够快速定位发生变化的数据块,无需进行数据块校验,效率较高,且本申请采用数据块合并备份的方式可进一步提高数据备份效率;而且,本备份方案支持将块存储备份到任意对象存储介质,更加灵活。
[0046]
本发明还提供了一种ceph分布式块存储的备份系统及装置,与上述备份方法具有相同的有益效果。
附图说明
[0047]
为了更清楚地说明本发明实施例中的技术方案,下面将对现有技术和实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0048]
图1为本发明实施例提供的一种ceph分布式块存储的备份方法的流程图;
[0049]
图2为本发明实施例提供的一种ceph分布式块存储的备份系统的结构示意图。
具体实施方式
[0050]
本发明的核心是提供一种ceph分布式块存储的备份方法、系统及装置,采用快照
对比方式找出每次备份时所有发生变化的数据块,能够快速定位发生变化的数据块,无需进行数据块校验,效率较高,且本申请采用数据块合并备份的方式可进一步提高数据备份效率;而且,本备份方案支持将块存储备份到任意对象存储介质,更加灵活。
[0051]
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0052]
请参照图1,图1为本发明实施例提供的一种ceph分布式块存储的备份方法的流程图。
[0053]
该ceph分布式块存储的备份方法包括:
[0054]
步骤s1:每隔预设备份周期,均创建ceph分布式块存储的新快照。
[0055]
具体地,本申请每隔预设备份周期,均创建ceph分布式块存储的新快照,以为后续找出本次备份时所有发生变化的数据块提供参考依据。
[0056]
步骤s2:将新快照与上一次备份时创建的快照进行比较,以找出本次备份时所有发生变化的数据块。
[0057]
具体地,本申请将本次备份时创建的新快照与上一次备份时创建的快照进行比较,可找出本次备份时所有发生变化的数据块。这种快照对比方式能够快速定位发生变化的数据块,无需进行数据块校验,效率较高。
[0058]
需要说明的是,步骤s1和步骤s2的过程是通过调用ceph提供的内部接口来实现的。
[0059]
步骤s3:将本次备份时所有发生变化的数据块进行合并处理,并将合并得到的数据块中的待备份数据备份到预准备的备份介质中。
[0060]
具体地,本申请为了提高数据传输效率,在进行备份之前,将本次备份时所有发生变化的数据块进行合并处理,以将较小的数据块合并成较大的数据块。然后,本申请将合并得到的数据块中的待备份数据备份到预准备的备份介质中,完成本次备份。
[0061]
可见,本申请的备份全部采用增量备份,以缩短数据传输时间,减少备份空间占用。此外,本申请的备份可以采用s3(simple storage service,是一种面向网络的存储服务,可以支持用户随时在web的任何位置,存储和检索任意大小的数据)、swift、nfs(network file system,网络文件系统)等接口传输到备份介质,本申请在此不做特别的限定。
[0062]
本发明提供了一种ceph分布式块存储的备份方法,每隔预设备份周期,均创建ceph分布式块存储的新快照;将新快照与上一次备份时创建的快照进行比较,以找出本次备份时所有发生变化的数据块;将本次备份时所有发生变化的数据块进行合并处理,并将合并得到的数据块中的待备份数据备份到预准备的备份介质中。可见,本申请采用快照对比方式找出每次备份时所有发生变化的数据块,能够快速定位发生变化的数据块,无需进行数据块校验,效率较高,且本申请采用数据块合并备份的方式可进一步提高数据备份效率;而且,本备份方案支持将块存储备份到任意对象存储介质,更加灵活。
[0063]
在上述实施例的基础上:
[0064]
作为一种可选的实施例,将本次备份时所有发生变化的数据块进行合并处理,并
将合并得到的数据块中的待备份数据备份到预准备的备份介质中的过程,包括:
[0065]
将本次备份时所有发生变化的数据块的块地址信息进行合并处理,得到合并后的数据块的块地址信息;
[0066]
根据合并后的数据块的块地址信息,将合并后的数据块中的待备份数据备份到预准备的备份介质中。
[0067]
具体地,本申请可在找出本次备份时所有发生变化的数据块之后,将本次备份时所有发生变化的数据块的块地址信息进行合并处理,得到合并后的数据块的块地址信息。比如,每个发生变化的数据块的块地址信息用如下三元组表示:[start,end,length],其中,start表示数据块起始地址,end表示数据块结束地址,length表示数据块大小。若将两个数据块的块地址信息[0,10,10]和[5,30,25]进行合并处理,可得到合并后的数据块的块地址信息[0,30,30]。然后,根据合并后的数据块的块地址信息,将合并后的数据块中的待备份数据备份到备份介质中即可。
[0068]
作为一种可选的实施例,ceph分布式块存储的备份方法还包括:
[0069]
在找出本次备份时所有发生变化的数据块之后,将本次备份时所有发生变化的数据块的块地址信息均记录到为本次备份创建的元数据文件中;其中,为本次备份创建的元数据文件的名称为本次备份的id。
[0070]
进一步地,本申请还可为每次备份均创建一个元数据文件,目的是在找出本次备份时所有发生变化的数据块之后,将本次备份时所有发生变化的数据块的块地址信息均记录到为本次备份创建的元数据文件中,从而通过元数据文件可了解到每次备份时所有发生变化的数据块。
[0071]
需要说明的是,为本次备份创建的元数据文件的名称为本次备份的id(表示第几次备份),以根据元数据文件的名称确定元数据文件是第几次备份时创建的。
[0072]
作为一种可选的实施例,ceph分布式块存储的备份方法还包括:
[0073]
预先创建用于记录所有备份的上下游关系的备份链文件;其中,每次备份在备份链文件中均拥有一个包括备份id、parent及child信息的节点;
[0074]
在新增一次备份时,在备份链文件中增加一个新节点,将上一次备份的节点的child改为本次备份的id,并将新节点的parent改为上一次备份的id,且将新节点的child置为空。
[0075]
进一步地,本申请还可创建用于记录所有备份的上下游关系的备份链文件,所有备份的上下游关系表示所有备份的创建顺序,即哪个备份在哪个备份之前创建,哪个备份在哪个备份之后创建。可以理解的是,每次备份在备份链文件中均拥有一个节点,节点信息包括备份id、parent及child。
[0076]
在新增一次备份时,在备份链文件中增加一个新节点,将上一次备份的节点的child改为本次备份的id,并将新节点的parent改为上一次备份的id,将新节点的child置为空。需要说明的是,第1次备份在备份链文件中拥有的节点的节点信息中parent为空。
[0077]
比如,在第1次备份时,第1次备份在备份链文件中拥有的节点的节点信息包括备份id:1、parent:0、child:0;在新增一次备份时,第1次备份在备份链文件中拥有的节点的节点信息包括备份id:1、parent:0、child:2,第1次备份在备份链文件中拥有的节点的节点信息包括备份id:2、parent:1、child:0。
[0078]
作为一种可选的实施例,ceph分布式块存储的备份方法还包括:
[0079]
在对第n次备份进行备份恢复时,根据备份链文件的记录内容,获取第1次到第n次备份对应的元数据文件;其中,n为正整数;
[0080]
根据任一次备份对应的元数据文件,确定此次备份时所有发生变化的数据块的块地址信息;
[0081]
将第1次到第n次备份时各自对应的所有发生变化的数据块的块地址信息进行合并处理,得到合并后的总数据块的块地址信息;
[0082]
根据总数据块的块地址信息,从备份介质中读取出相应数据以恢复云硬盘中的相应数据。
[0083]
进一步地,本申请还可进行备份恢复,传统的备份恢复,是从最早的备份开始,从前往后逐个进行恢复,这种方式会出现某些区间的数据被多次恢复的情况。比如,一个容量为30gb的云硬盘,使用传统的备份方式,第一次备份出去30gb数据,之后又有10gb数据发生了变化,再将这10gb发生变化的数据备份出去。如果要将云硬盘恢复到第二次备份时的状态,首先要恢复第一次备份的30gb数据量,然后再在此基础上恢复第二次备份的10gb数据量,总共需要恢复30+10=40gb数据。
[0084]
而本申请在对第n次备份进行备份恢复时,根据备份链文件的记录内容,得到第1次到第n次备份对应的备份id,并根据第1次到第n次备份对应的备份id,获取第1次到第n次备份对应的元数据文件;根据第1次到第n次备份中任一次备份对应的元数据文件,确定此次备份时所有发生变化的数据块的块地址信息;将第1次到第n次备份时各自对应的所有发生变化的数据块的块地址信息进行合并处理,得到合并后的总数据块的块地址信息;根据总数据块的块地址信息,从备份介质中读取出相应数据以恢复云硬盘中的相应数据。这种备份恢复方法,可以减少不必要的数据恢复量。
[0085]
作为一种可选的实施例,从在对第n次备份进行备份恢复时到得到合并后的总数据块的块地址信息的过程,包括:
[0086]
在对第n次备份进行备份恢复时,获取第n次备份对应的元数据文件;
[0087]
根据第n次备份对应的元数据文件,确定第n次备份时所有发生变化的数据块的块地址信息;
[0088]
根据备份链文件的记录内容,获取第n
‑
m次备份对应的元数据文件;其中,m的初始值为1;
[0089]
根据第n
‑
m次备份对应的元数据文件,确定第n
‑
m次备份时所有发生变化的数据块的块地址信息;
[0090]
将第n
‑
m次到第n次备份时各自对应的所有发生变化的数据块的块地址信息进行合并处理,得到合并后的总数据块的块地址信息;
[0091]
将m=m+1,并根据备份链文件的记录内容,获取第n
‑
m次备份对应的元数据文件;
[0092]
根据第n
‑
m次备份对应的元数据文件,确定第n
‑
m次备份时所有发生变化的数据块的块地址信息;
[0093]
将第n
‑
m次备份的所有发生变化的数据块的块地址信息与上一次合并后的总数据块的块地址信息进行合并处理,得到新合并后的总数据块的块地址信息,并返回执行将m=m+1,并根据备份链文件的记录内容,获取第n
‑
m次备份对应的元数据文件的步骤,直至将第
1次到第n次备份时各自对应的所有发生变化的数据块的块地址信息进行合并处理完毕。
[0094]
具体地,假设当前做了四次备份,按照时间顺序分别为a、b、c、d,若要将云硬盘恢复到c时的状态,则备份恢复过程具体如下:
[0095]
1)获取备份c对应的元数据文件,得到c备份了哪些数据块,假设只有[50,100,50]这一个数据块。2)获取c的上一次备份b对应的元数据文件,得到b备份了哪些数据块,假设只有[20,80,60]这一个数据块。3)由上述两个数据块可知,在创建c备份时,20到50这一地址空间上的数据是没有发生变化的,将云硬盘恢复到c的状态时,c备份创建之前没有发生变化的数据也要恢复,因此,要将b和c的两个数据块做一些合并处理,合并结果是[20,100,80]。4)继续获取b的上一次备份a对应的元数据文件,得到a备份了哪些数据块,假设只有[0,90,90]这一个数据块。5)根据3)中的原理,将数据块[20,100,80]和数据块[0,90,90]进行合并处理,合并结果是[0,100,100],这就是最终要恢复的数据量。6)从备份介质中读取[0,100,100]这些数据,覆盖云硬盘中的相应数据,达到备份恢复的目的。
[0096]
这种备份恢复方式称为超前计算,即在恢复开始之前,先进行计算。如果不采用这种方式,总共需要做三次恢复,第一次恢复a备份,需要恢复90的数据量,第二次恢复b备份,需要恢复60的数据量,第三次恢复c备份,需要恢复50的数据量,总共需要恢复90+60+50=200的数据量。而采用超前计算的方式,只需要进行一次恢复,恢复的数据量为100,可以减少不必要的数据恢复量。
[0097]
作为一种可选的实施例,数据块的块地址信息为[start,end,length];其中,start表示数据块起始地址,end表示数据块结束地址,length表示数据块大小。
[0098]
本实施例在上述实施例中已作介绍,本申请在此不再赘述。
[0099]
请参照图2,图2为本发明实施例提供的一种ceph分布式块存储的备份系统的结构示意图。
[0100]
该ceph分布式块存储的备份系统包括:
[0101]
创建模块1,用于每隔预设备份周期,均创建ceph分布式块存储的新快照;
[0102]
比较模块2,用于将新快照与上一次备份时创建的快照进行比较,以找出本次备份时所有发生变化的数据块;
[0103]
备份模块3,用于将本次备份时所有发生变化的数据块进行合并处理,并将合并得到的数据块中的待备份数据备份到预准备的备份介质中。
[0104]
作为一种可选的实施例,备份模块3具体用于:
[0105]
将本次备份时所有发生变化的数据块的块地址信息进行合并处理,得到合并后的数据块的块地址信息;
[0106]
根据合并后的数据块的块地址信息,将合并后的数据块中的待备份数据备份到预准备的备份介质中。
[0107]
本申请提供的备份系统的介绍请参考上述备份方法的实施例,本申请在此不再赘述。
[0108]
本申请还提供了一种ceph分布式块存储的备份装置,包括:
[0109]
存储器,用于存储计算机程序;
[0110]
处理器,用于在执行计算机程序时实现上述任一种ceph分布式块存储的备份方法的步骤。
[0111]
本申请提供的备份装置的介绍请参考上述备份方法的实施例,本申请在此不再赘述。
[0112]
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0113]
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其他实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。