一种基于索引的VMware虚拟机合成备份方法与流程

文档序号:14156281阅读:360来源:国知局
本发明涉及计算机数据备份
技术领域
,具体涉及一种基于索引的vmware虚拟机合成备份方法。
背景技术
:虚拟化产品受到客户的广泛青睐,目前在金融、互联网、医疗等数据量较大的领域都广泛运用到了虚拟化产品,vmware虚拟机由于简单易用、功能丰富、可靠性高成为世界上使用最为广泛的虚拟机。虽然vmware具有强大的虚拟化功能,但在实际应用中,如果出现硬盘损坏、虚拟机硬盘文件损坏等情况,vmware虚拟机不能正常运行,导致给客户带来重大损失,因此针对上述情况,需要对vmware虚拟机硬盘文件进行备份。目前vmware的备份主要通过cbt(changedblocktracking块修改跟踪模块)获取到每个磁盘的变化块,其结果类似“(117768192,65536),(132120576,65536)”,每项的格式为(offset,length);offset代表变化块的起始位置,length代表长度,再使用virtualdiskapi(虚拟磁盘应用程序编程接口,是一些预先定义的函数)中的函数vixdisklib来读取对应磁盘的数据,从而达到备份的目的。现有技术中备份分为完全备份和合成备份;完全备份每次备份都会将虚拟机磁盘上的所有数据完整备份到一个存储器中,这种备份对网络、宿主机和存储都会造成极大的资源消耗,所得的备份称为完全备份集;增量备份是对每个vmware虚拟机虚拟磁盘从上一次完全备份发生变化的扇区块进行备份,所得的备份称为增量备份集;合成备份则是将存储器中的完全备份集和增量备份集合成一个新的完全备份集,这种备份方式,不占用网络带宽,类似本地的读写,对生产环境的负荷减少,主要处理不在生产环境中进行。现有技术中传统的合成备份是针对数据内容进行合成的,需要获取到需要合成的数据内容,再重新组织成一个新的备份集,如果需要合成的备份集很大时,合成备份时间会较长,效率不高(但相对完全备份来说还是效率高的)。同时,传统的合成备份方式,只能局限于指定合成的那几个备份集,不能随意指定任意备份集进行合成。比如有一个备份集链a、b、c、d,其中a是完全备份集,bcd都是增量备份集,传统合成备份方式就是将abcd合成一个新的备份集e。如果需要恢复d备份集这个时刻的话,一般是先恢复a,在依次恢复bcd,有了合成备份集e后,就可以直接恢复备份集e来达到恢复效果。如果指定的是要恢复c备份集,那就只能先恢复a,再依次恢复bc。那么依旧会有需要恢复一个备份链abc的问题,恢复效率还是不高,恢复备份链一般会有同一位置数据被覆盖的问题,比如需要恢复c这个备份集时,需要按顺序恢复abc,假如abc备份集中都有扇区块1的内容,恢复时扇区块1的内容就会被abc都覆盖一次,a恢复出来的数据可能会被bc覆盖。被覆盖的数据本身就是对恢复资源的浪费,通过传统的合成备份方式可以直接恢复合成备份集e来完成对d的恢复,不存在数据覆盖的问题。但是如果需要恢复c时,备份集e不满足条件,传统的合成备份方式就无法应对,还是只能按顺序恢复abc。执行合成备份时一般都是将最新的完全备份集或合成备份集与其之后的增量备份集进行合成,比如,最新的备份集链abc,启动合成备份时,就是对abc进行合成;最新的备份集链abcd,启动合成备份时,就是对abcd进行合成;这种以数据内容为合成目标的合成方式不够灵活,只有在执行合成备份时,才能确定哪些备份集需要合成,不支持任意备份集的动态合成,也不能指定任意备份集恢复。本发明的合成备份是通过索引的方式来进行合成的,不受限于备份集的大小,同时支持任意备份集的动态合成,指定任意备份集恢复时,就能自动确定每个扇区块的数据是在哪个备份集中。技术实现要素:为解决现有技术中的不足,本发明提供一种基于索引的vmware虚拟机合成备份方法,解决了现有虚拟机合成备份方法以数据内容为合成目标,备份时间长且效率低,合成方式不灵活,不支持任意备份集的动态合成,不能指定任意备份集恢复的问题。为了实现上述目标,本发明采用如下技术方案:一种基于索引的vmware虚拟机合成备份方法,其特征在于,包括步骤:步骤一、建立索引数据库,对vmware虚拟机进行完全备份,并将完全备份信息写入到索引数据库中;步骤二、对vmware虚拟机进行增量备份,并将增量备份信息写入到索引数据库中;步骤三、在索引数据库中,查询时间最新的备份索引表,根据备份时间点获取每个最新的扇区块索引记录,保存到新的合成备份索引表中;步骤四、查询索引数据库,获取每个扇区块指定时间点前最新的索引记录,得到每个扇区块在存储介质备份集中的位置,从对应备份集中读取扇区块的内容,将扇区块内容再写入虚拟机磁盘的相应位置,完成恢复。前述的一种基于索引的vmware虚拟机合成备份方法,其特征是:所述步骤一,完全备份步骤包括:1)使用vmwarevsphere提供的vsphereapi建立和vmware虚拟机的连接,并备份虚拟机的配置信息;2)使用vsphereapi创建快照;3)使用vmware的vddkapi建立和快照的第一个磁盘的连接;4)调用vddkapi读取快照中第一个磁盘,所有扇区块的内容,将每个扇区块内容保存到存储介质中的一个备份集中,同时将每个扇区块的完全备份信息,写到索引数据库中,形成完全备份索引表;5)依次处理快照中的其他磁盘,所有磁盘处理完毕后,删除快照,并断开与虚机的连接。前述的一种基于索引的vmware虚拟机合成备份方法,其特征是:所述完全备份信息包括:每个扇区块的所属的虚拟机磁盘唯一标识、扇区块号、所属的备份集id,扇区块数据在备份集中的偏移位置、扇区块的数据大小、以及备份时间点。前述的一种基于索引的vmware虚拟机合成备份方法,其特征是:所述步骤二中,增量备份具体步骤包括:1)使用vsphereapi建立和虚拟机的连接,并备份虚拟机的配置信息;2)使用vsphereapi创建快照;3)使用vddkapi建立和快照的第一个磁盘的连接;4)对快照的第一个磁盘,调用querychangeddiskareas接口,获取它与上次备份时磁盘之间发生了变化的扇区块列表;5)调用vddkapi读取该磁盘发生变化的扇区块的内容,将每个扇区块内容保存到存储介质中的一个备份集中,同时将每个扇区块的增量备份信息写到索引数据库中,记载到时间最新的备份索引表中;6)依次处理快照中的其他磁盘,所有磁盘处理完毕后,删除快照,并断开与虚机的连接。前述的一种基于索引的vmware虚拟机合成备份方法,其特征是:所述增量备份信息包括:每个扇区块所属的虚拟机磁盘唯一标识、扇区块号、所属的备份集id,扇区块数据在备份集中的偏移位置、扇区块的数据大小、以及备份时间点。前述的一种基于索引的vmware虚拟机合成备份方法,其特征是:所述步骤三中,时间最新的备份索引表为完全备份索引表或合成备份索引表。前述的一种基于索引的vmware虚拟机合成备份方法,其特征是:所述步骤四中,具体恢复步骤包括:1)使用vsphereapi建立和待恢复虚拟机的连接,并恢复虚拟机的配置信息;2)使用vsphereapi创建快照;3)使用vddkapi建立和快照的第一个磁盘的连接;4)查询索引数据库记录,根据磁盘的唯一标识和备份时间点,获取每个扇区块的指定时间点前最新的索引记录,根据索引得知每个扇区块在存储介质中备份集的位置,从对应备份集中读取扇区块的内容;再调用vddkapi,将扇区块内容再写入快照磁盘的相应位置;该磁盘的扇区块写入完成后,关闭与磁盘的连接;5)依次处理快照中的其它磁盘,删除快照,并断开与虚机的连接。本发明所达到的有益效果:本发明通过索引合成的方式对vmware虚拟机海量级数据进行合成备份,合成方式灵活,支持任意备份集的动态合成,恢复时根据索引记录能快速获取需要恢复的每个扇区块的内容,解决了恢复时需要依赖备份集链的问题,本发明方法合成效率高,耗时大大缩短,适合vmware虚拟机大量数据的合成备份及恢复。具体实施方式下面对本发明作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。一种基于索引的vmware虚拟机合成备份方法,步骤包括:步骤一、通过现有数据库技术建立索引数据库,对vmware虚拟机进行完全备份,并将完全备份信息写入到索引数据库中;所述步骤一,具体完全备份步骤包括:1)使用vmwarevsphere提供的一个应用程序编程接口(以下简称vsphereapi)建立和vmware虚拟机的连接,并备份虚拟机的配置信息;2)使用vsphereapi创建快照,往往会创建quiseced类型的快照,来保证应用或者文件系统一致性;3)使用vmware的虚拟磁盘开发工具包(以下简称vddkapi)建立和快照的第一个磁盘的连接,连接的传输模式是san/hotadd/nbdssl/nbd中的一种;4)调用vddkapi读取快照中第一个磁盘(一个虚拟机可能有多个磁盘)所有扇区块的内容,将每个扇区块内容保存到存储介质中的一个备份集中,该备份集具有一个id,同时将每个扇区块的所属的虚拟机磁盘唯一标识、扇区块号、所属的备份集id,扇区块数据在备份集中的偏移位置、扇区块的数据大小、以及备份时间点组成索引记录,即完全备份信息,写到索引数据库中,形成完全备份索引表;5)依次处理快照中的其他磁盘,所有磁盘处理完毕后,删除快照,并断开与虚机的连接。步骤二、对vmware虚拟机进行增量备份,并将增量备份信息写入到索引数据库中;所述步骤二,具体增量备份步骤包括:1)使用vsphereapi建立和虚拟机的连接,并备份虚拟机的配置信息;2)使用vsphereapi创建快照,往往会创建quiseced类型的快照,来保证应用或者文件系统一致性;3)使用vddkapi建立和快照的第一个磁盘的连接,连接的传输模式将会是san/hotadd/nbdssl/nbd中的一种;4)对快照的第一个磁盘,调用querychangeddiskareas接口,获取它与上次备份时磁盘之间发生了变化的扇区块列表;5)调用vddkapi读取该磁盘发生变化的扇区块的内容,将每个扇区块内容保存到存储介质中的一个备份集中,同时将每个扇区块的所属的虚拟机磁盘唯一标识、扇区块号、所属的备份集id,扇区块数据在备份集中的偏移位置、扇区块的数据大小、以及备份时间点组成索引记录,即增量备份信息,写到索引数据库中,记载到时间最新的备份索引表中,该索引表可能是完全备份,也可能是合成备份索引表。6)依次处理快照中的其他磁盘,所有磁盘处理完毕后,删除快照,并断开与虚机的连接。步骤三、在索引数据库中,查询时间最新的备份索引表(完全备份或合成备份索引表),根据备份时间点获取每个最新的扇区块索引记录,保存到新的合成备份索引表中;之后执行的增量备份的索引记录保存到该合成备份索引表中,直到下一次完全或者合成备份开始时,记录到新表中。步骤四:查询索引数据库,根据磁盘的唯一标识和备份时间点,获取每个扇区块指定时间点前最新的索引记录,得到每个扇区块在存储介质备份集中的位置,从对应备份集中读取扇区块的内容;将扇区块内容再写入虚拟机磁盘的相应位置,完成恢复。步骤四中,具体恢复步骤包括:1)使用vsphereapi建立和待恢复虚拟机的连接,并恢复虚拟机的配置信息;2)使用vsphereapi创建快照,往往会创建quiseced类型的快照,来保证应用或者文件系统一致性;3)使用vddkapi建立和快照的第一个磁盘的连接;4)查询索引数据库记录,根据磁盘的唯一标识和备份时间点,获取每个扇区块的指定时间点前最新的索引记录,根据索引得知每个扇区块所属的存储介质中备份集id、偏移位置和长度,从对应备份集中读取扇区块的内容;再调用vddkapi,将扇区块内容再写入快照磁盘的相应位置;该磁盘的扇区块写入完成后,关闭与磁盘的连接;5)依次处理快照中的其它磁盘,删除快照,并断开与虚机的连接。表1备份数据表示例扇区块1扇区块2扇区块3扇区块4扇区块5扇区块6扇区块7扇区块8扇区块9完全t1i11i12i13i14i15i16i17i18i19增量t2i22i26增量t3i31i34i38增量t4i44i46i49合成t5i31i22i13i44i15i46i17i38i49增量t6i63i66合成t7i31i22i63i44i15i66i17i38i49说明:第一列代表备份类型和时间点,“完全t1”表示在t1时间点做的完全备份;“增量t4”表示在t4时间点做的增量备份;“合成t7”表示在t7时间点做的合成备份。第一行表示扇区块号。i11表示,在t1时刻,扇区块1对应的索引记录;i15表示在t1时刻,扇区块5对应的索引记录,其他依次类推。增量t2备份的时候有两个扇区块发生变化,扇区块2和扇区块6,保存索引i22和i26。其他增量同理。“合成t5”就是将t1、t2、t3、t4时刻对应的完全和增量备份进行合成备份,由表1可知扇区块1最新的记录是i31(增量t3时记录的索引记录)、扇区块2最新的记录是i22、扇区块3最新的记录是i13,依次类推。加粗的部分就是每个扇区块最新的记录。合成备份就是将备份链(t1、t2、t3、t4)中每一个扇区块最新的记录保存到新的索引表中形成合成备份索引表。“合成t7”是将t5时刻的合成备份与t6时刻的增量备份进行合成,其中,增量t6有两个扇区块发生变化,扇区块3最新索引是i63,扇区块6最新索引是i66。与传统数据合成备份相比较,基于索引的合成备份只处理索引记录,需要处理的数据量很小,效率高,耗时大大缩短;恢复时,先获取到索引记录,根据索引知道每个扇区块的内容记录在哪个位置,效率高,耗时短。以上所述仅是本发明的优选实施方式,应当指出,对于本
技术领域
的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1