一种数据备份方法及装置与流程

文档序号:12905980阅读:183来源:国知局
一种数据备份方法及装置与流程
本发明涉及网络通信
技术领域
,尤其涉及一种数据备份方法及装置。
背景技术
:现有虚拟机磁盘备份主要包括三种备份方式:全量备份、增量备份、差异备份,即,对全部磁盘数据块备份或对新增的、有变化的磁盘数据块备份。当虚拟机运行具体业务时,例如,文件服务器,会产生日志、临时目录等信息,这些信息的备份价值不高,采用现有磁盘备份方式会对这些备份价值不高的信息进行备份,造成系统资源浪费。技术实现要素:本发明的目的在于提供一种数据备份方法及装置,用以针对真正有价值的数据进行备份。为实现上述发明目的,本发明提供了技术方案:本发明提供一种数据备份方法,应用于虚拟机所在的主机上,所述方法包括:确定虚拟机磁盘镜像文件中的待备份目录;根据所述待备份目录的备份列表中记录的数据的索引节点所在磁盘块的块号以及数据的路径,备份所述数据的索引节点和所述数据。本发明还提供一种数据备份装置,应用于虚拟机所在的主机上,所述装置包括:确定单元,用于确定虚拟机磁盘镜像文件中的待备份目录;备份单元,用于根据所述待备份目录的备份列表中记录的数据的索引节点所在磁盘块的块号以及数据的路径,备份所述数据的索引节点和所述数据。由以上描述可以看出,本发明对指定目录(即待备份目录)下数据的索引节点所在磁盘块以及数据所在磁盘块进行备份,以尽量减少备份数据量,提升备份速度,并可减少资源占用。附图说明图1是本发明实施例示出的数据备份方法流程图;图2是本发明实施例示出的主机的结构示意图;图3是本发明实施例示出的数据备份装置的结构示意图。具体实施方式这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。在本发明使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。应当理解,尽管在本发明可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本发明范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。本发明实施例提出一种数据备份方法,该方法对指定目录下数据的索引节点所在磁盘块以及数据所在磁盘块进行备份,以尽可能地减少备份数据量,提升备份速度,并减少资源占用。参见图1,为本发明数据备份方法的一个实施例流程图,该实施例示出的数据备份过程由虚拟机所在主机执行。步骤101,确定虚拟机磁盘镜像文件中的待备份目录。本发明可根据实际业务需求,指定需要备份的有价值数据所在目录为待备份目录。例如,对于一个提供数据库服务的虚拟机,可指定数据库文件所在目录为待备份目录,对该待备份目录下的所有数据库文件进行备份。主机在备份虚拟机的有价值数据之前,首先要解析虚拟机的磁盘镜像文件(简称虚拟机磁盘镜像文件),确定虚拟机的文件系统类型(虚拟机可根据实际需求选择安装适合自己的文件系统,不同文件系统的数据结构不同,决定了文件的查找方式不同),然后,基于该文件系统的数据结构,根据待备份目录的完整路径,找到虚拟机磁盘镜像文件中的待备份目录。例如,主机通过解析虚拟机磁盘镜像文件,解析出虚拟机的文件系统类型为ext4,则可根据ext4文件系统的数据结构特点以及待备份目录的完整路径,找到虚拟机磁盘镜像文件中的待备份目录。在确定待备份目录后,监控待备份目录的修改时间。具体为,确定待备份目录的索引节点所在磁盘块,该磁盘块为虚拟机文件系统读写的基本单位,例如,在ext4文件系统中,该磁盘块为block。由于主机基于簇cluster进行读写操作,因此,需要根据磁盘块与簇的映射关系,例如,1个cluster等于512个block,确定待备份目录索引节点所在簇,进而监控该簇内待备份目录索引节点记录的修改时间。当待备份目录的修改时间发生变化时,判断待备份目录的目录列表是否发生变化,该目录列表用于记录待备份目录中数据的路径,例如,在待备份目录的目录列表中,子目录a的目录项记录子目录a的上级目录为待备份目录、下级目录为子目录b,子目录b的目录项记录子目录b的上级目录为子目录a、下级目录为子目录c,以此类推,当查找子目录c时,可通过对上述目录项的查找,确定子目录c的路径为:待备份目录/a/b/c。需要补充说明的是,可通过如下方式判断待备份目录的目录列表是否发生变化:在一种实施方式中,可将此次时间变化后的目录列表与上一次时间变化后的目录列表进行比对,确定目录列表是否发生变化;在另一种实施方式中,可将此次时间变化后的目录列表与待备份目录的备份列表(该备份列表中记录了上一次时间变化后待备份目录中数据的路径)进行比对,确定目录列表是否发生变化。当待备份目录的目录列表变化时,根据当前的目录列表更新待备份目录的备份列表。该备份列表记录数据(例如,待备份目录、待备份目录下的子目录、待备份目录下的文件中的任意一个或者多个)的索引节点所在磁盘块与数据的路径的对应关系。参见表1,为备份列表示例。数据的索引节点所在磁盘块数据的路径block1/uploadblock2/upload/file1block3/upload/dir1表1如表1所示,指定upload为待备份目录,则第1条备份表项记录upload索引节点所在磁盘块“block1”,以及upload的路径“/upload”;第2条备份表项记录upload下的文件file1的索引节点所在磁盘块“block2”,以及file1的路径“/upload/file1”;第3条备份表项记录upload下的子目录dir1的索引节点所在磁盘块“block3”,以及dir1的路径“/upload/dir1”。需要说明的是,由于待备份目录本身也是一种数据文件,因此,本实施例中对数据的备份,除了对待备份目录下的子目录和/或文件的备份外,还可以对待备份目录本身的备份,即表1中的第1条表项中,记录的路径信息:/upload就是存储待备份目录本身所对应的路径。当删除待备份目录下的子目录或文件时,根据待备份目录的目录列表的变化,删除备份列表中对应的备份表项即可,在此不再赘述。当待备份目录的修改时间发生变化而目录列表没有变化时,说明待备份目录下不存在文件或子目录数量上的增加或删除,可能仅是对现有的文件中的内容的修改,不需要更新备份列表。从上述描述可以看出,随着待备份目录下子目录及文件的变化,备份列表也随之更新,以保证备份列表中记录的信息与待备份目录下的实际情况保持一致。步骤102,根据所述待备份目录的备份列表中记录的数据的索引节点所在磁盘块的块号以及数据的路径,备份所述数据的索引节点和所述数据。具体为,当需要备份时,获取备份列表中记录的数据的索引节点所在磁盘块的块号,根据磁盘块与簇的映射关系确定数据的索引节点所在簇,备份该数据的索引节点所在簇;根据备份列表中记录的数据的路径,找到虚拟机磁盘镜像文件中数据所在磁盘块,根据磁盘块与簇的映射关系确定该数据所在簇,备份数据所在簇。即,通过对数据索引节点的备份以及具体数据内容的备份,完成对待备份目录的备份。从上述备份过程可以看出,本发明是基于有价值数据(包括索引节点和具体数据内容)所在磁盘块进行备份,从而过滤掉不需要备份的磁盘块,减少备份数据量,提升备份效率,提高磁盘有效利用率。当需要还原时,由位于主机上的虚拟机执行数据还原过程,例如,可借助安装在虚拟机上的类似于vmwaretool的工具实现数据还原。具体还原过程如下:虚拟机比对备份列表中记录的数据的路径与当前虚拟机磁盘镜像文件中待备份目录upload的目录列表中记录的路径是否一致;当路径不一致时,虚拟机根据备份列表中记录的数据的路径更新当前虚拟机磁盘镜像文件中待备份目录的目录列表,对于备份列表中有而目录列表中没有的路径,按照备份列表中记录的路径在待备份目录的目录列表下还原该路径;对于备份列表中没有而目录列表中有的路径,则删除目录列表下对应路径;然后,根据更新后的目录列表还原已备份的数据和数据的索引节点信息。例如,虚拟机将表1中第3条备份表项记录的数据的路径“/upload/dir1”与当前虚拟机磁盘镜像文件中upload的目录列表中的路径进行比对,比对结果为虚拟机磁盘镜像文件的upload目录下没有子目录dir1,则虚拟机在虚拟机磁盘镜像文件的upload目录下新建子目录dir1,并为该子目录dir1分配索引节点,完成目录列表更新,然后,读出已备份的dir1的数据内容写入新建子目录dir1,读出已备份的索引节点信息写入dir1的索引节点。现以服务器server(虚拟机所在主机)为例,服务器server上运行虚拟机virta,虚拟机virta安装linux操作系统,对应文件系统类型为ext4,虚拟机磁盘格式为qcow2。确定的虚拟机virta的待备份目录为upload,待备份目录的完整路径为/upload。其中,待备份目录可以为在安装虚拟机时预先设置的,或者,也可以在接收管理员发送的确定指令时,根据该确定指令中指定的待备份目录的标识,确定待备份目录。首先,服务器server解析虚拟机virta的磁盘镜像文件virta.qcow2,解析出虚拟机的文件系统为ext4,然后,根据待备份目录的完整路径(可在指定待备份目录时,提供待备份目录的完整路径),并基于ext4文件系统的数据结构特点,找到待备份目录upload对应的索引节点inode所在磁盘块block1,将block1转换成簇cluster1,监控cluster1里的目录upload的修改时间t。并将目录upload的索引节点所在磁盘块的块号block1和该目录的路径/upload记录到备份列表中,参见表1中的第1条备份表项。当t发生变化时,服务器server判断目录列表是否发生变化,若判断出由于目录upload下新增文件file1导致目录列表变化,则找到file1对应的索引节点inode所在磁盘块block2,将块号block2和file1的路径/upload/file1记录到备份列表中,参见表1中的第2条备份表项。当t再次发生变化时,服务器server判断目录列表是否发生变化,若判断出此次由于目录upload下新增子目录dir1导致目录列表变化,则找到dir1对应的索引节点inode所在磁盘块block3,将块号block3和dir1的路径/upload/dir1记录到备份列表中,参见表1中的第3条备份表项。当需要备份时,服务器server获取表1中记录的索引节点所在磁盘块的块号,根据磁盘块与簇的映射关系,确定索引节点所在簇,备份索引节点所在簇,例如,若根据磁盘块与簇的映射关系,确定block1对应的簇为cluster1,block2对应的簇为cluster2,block3对应的簇为cluster3,则备份cluster1、cluster2、cluster3。服务器server根据表1中记录的数据的路径,找到virta.qcow2中数据所在磁盘块,根据磁盘块与簇的映射关系确定数据所在簇,备份数据所在簇,例如,若根据路径“/upload”找到upload数据所在磁盘块为block10~block20,根据磁盘块与簇的映射关系,确定block10~block20对应的簇为cluster100~cluster200,则备份cluster100~cluster200;同理,若根据路径“/upload/file1”找到file1数据所在磁盘块为block30~block70,根据磁盘块与簇的映射关系,确定block30~block70对应的簇为cluster300~cluster700,则备份cluster300~cluster700;若根据路径“/upload/dir1”找到dir1数据所在磁盘块为block80~block90,根据磁盘块与簇的映射关系,确定block80~block90对应的簇为cluster800~cluster900,则备份cluster800~cluster900。服务器server完成上述cluster的备份后,生成备份镜像文件backup1.qcow2。从上述备份过程可知,服务器server不是基于整个virta.qcow2的所有cluster进行备份,而是基于虚拟机上有价值数据所在磁盘块对应的cluster进行备份,从而减少了备份的数据量,提升了备份效率,同时,也节约了磁盘空间。当需要还原时,虚拟机virta比对表1中记录的数据的路径与virta.qcow2中upload的目录列表中记录的路径是否一致,当路径不一致时,根据表1中记录的数据的路径更新virta.qcow2中upload的目录列表,根据更新后的目录列表还原已备份的数据及数据的索引节点信息。例如,一种可选的实施方式中,虚拟机virta根据表1中第2条备份表项比对virta.qcow2的upload的目录列表下是否存在文件file1,如果不存在file1,则在virta.qcow2的upload目录下新建文件file1,为新建文件file1分配索引节点,然后,解析备份镜像文件backup1.qcow2,找到backup1.qcow2文件中备份的file1所在block,从该block中读取file1的数据写入virta.qcow2的upload下的file1,然后,从backup1.qcow2中file1的索引节点读出可用信息,例如,文件的操作权限等,写入virta.qcow2中为file1分配的索引节点,完成还原。另一种可选的实施方式中,若虚拟机virta根据表1中第2条备份表项比对virta.qcow2的upload目录列表下存在文件file1,则在还原file1时,虚拟机virta在virta.qcow2的upload目录下新建文件file11,为file11分配索引节点;然后,解析备份镜像文件backup1.qcow2,找到backup1.qcow2文件中的file1所在block,从该block中读取file1的数据写入virta.qcow2的upload目录下的file11;然后,从backup1.qcow2中file1的索引节点读出可用信息,写入virta.qcow2中为file11的分配的索引节点。待虚拟机重启后,确定还原的file11无问题时,可接收管理员发送的删除指令,根据所述删除指令删除目录virta.qcow2的upload下的原有文件file1,并自动将file11重命名为file1,从而完成全部的还原流程。另一种可选的实施方式中,当磁盘镜像文件virta.qcow2的upload下存在文件file2,但是表1中不存在/upload/file2的路径时,虚拟机virta删除virta.qcow2的upload下的file2。另一种可选的实施方式中,当磁盘镜像文件virta.qcow2的upload下存在子目录dir2,但是表1中不存/upload/dir2的路径时,虚拟机virta删除virta.qcow2的upload下的dir2。从上述还原过程可知,虚拟机是基于数据内容进行还原的,即从备份的磁盘块中读取数据进行还原,从而减少了还原的数据量。与前述数据备份方法的实施例相对应,本发明还提供了数据备份装置的实施例。本发明数据备份装置的实施例可以应用在主机上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在设备的处理器运行存储器中对应的计算机程序指令形成的。从硬件层面而言,如图2所示,为本发明数据备份装置所在设备的一种硬件结构图,除了图2所示的处理器以及非易失性存储器之外,实施例中装置所在的设备通常根据该设备的实际功能,还可以包括其他硬件,对此不再赘述。请参考图3,为本发明一个实施例中的数据备份装置的结构示意图。该数据备份装置包括确定单元301和备份单元302,其中:确定单元301,用于确定虚拟机磁盘镜像文件中的待备份目录;备份单元302,用于根据所述待备份目录的备份列表中记录的数据的索引节点所在磁盘块的块号以及数据的路径,备份所述数据的索引节点和所述数据。进一步地,所述装置还包括:更新单元,用于在所述确定单元301确定虚拟机磁盘镜像文件中的待备份目录之后,监控所述待备份目录的修改时间;当所述待备份目录的修改时间发生变化时,判断所述待备份目录的目录列表是否发生变化,所述目录列表用于记录所述待备份目录中数据的路径;当所述待备份目录的目录列表变化时,根据变化后的目录列表更新所述待备份目录的备份列表。进一步地,所述备份单元302,具体用于获取所述备份列表中记录的数据的索引节点所在磁盘块的块号;根据磁盘块与簇的映射关系,确定所述数据的索引节点所在簇;备份所述数据的索引节点所在簇;根据所述备份列表中记录的数据的路径,找到所述虚拟机磁盘镜像文件中所述数据所在磁盘块;根据所述磁盘块与簇的映射关系,确定所述数据所在簇;备份所述数据所在簇。进一步地,所述装置还包括:还原单元,用于当需要还原时,比对备份列表中记录的数据的路径与当前虚拟机磁盘镜像文件中待备份目录的目录列表中记录的路径是否一致;当路径不一致时,根据备份列表中记录的数据的路径更新当前虚拟机磁盘镜像文件中待备份目录的目录列表;根据更新后的目录列表还原已备份的数据和数据的索引节点信息。进一步地,所述还原单元根据备份列表中记录的数据的路径更新当前虚拟机磁盘镜像文件中待备份目录的目录列表,包括:对于备份列表中有而目录列表中没有的路径,按照备份列表中记录的路径在待备份目录的目录列表下还原该路径;对于备份列表中没有而目录列表中有的路径,删除目录列表下对应路径。上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1