一种虚拟机备份数据重复数据删除方法与流程

文档序号:13222043阅读:344来源:国知局
技术领域本发明涉及信息安全领域中的数据保护领域、涉及云计算领域内的虚拟机数据保护领域,尤其涉及一种虚拟机备份数据重复数据删除方法。

背景技术:
在虚拟机备份时,特别是完全备份时,Hypervisor会将虚拟机中虚拟磁盘的每个数据块都发送给备份代理。在这些数据块中,有部分数据块的数据完全一样,而且,有很大部分数据块全部为0,因此,在虚拟机备份存储时,可以将全0数据块、重复数据去除,从而提高存储速度、降低存储空间占用。传统的重复数据删除技术不区别对待全0数据块,因为在非虚拟化环境下出现的概率较小,重复数据删除时,还需计算全0数据块的散列值,这个计算非常耗时。同时,大多做在文件系统层,为全局重复数据删除,此技术在实际使用过程中存在计算资源占用量大,数据安全风险高的缺点。

技术实现要素:
本发明提出专门针对虚拟机备份数据的重复数据删除方法,为局部重复数据删除,范围限定在虚拟机中一个虚拟磁盘备份数据内部。通过对重复数据块的检测和消除、特别对全0数据块的检测和消除,提高备份系统中备份存储过程中备份速度,减少备份数据存储资源的占用,同时降低全局重复数据删除带来的数据安全风险。由于虚拟机数据以虚拟磁盘为单位,因此,本发明只描述单个虚拟磁盘的重复数据删除,整个虚拟机备份数据的重复数据删除为按照先后顺序对该虚拟机所有的虚拟磁盘的备份数据进行重复数据删除。本发明涉及一种虚拟机备份数据重复数据删除方法,定义的数据结构包括:定义重删元数据记录L数据结构,至少包括虚拟偏移量Lv,存储偏移量Lt,长度Le,状态Ls;定义哈希表重删记录D数据结构,至少包括存储偏移量Dt,长度De;本发明包括以下步骤:步骤1,虚拟机备份数据重复数据删除步骤,包括:步骤101,初始化,从配置文件Fs中读出所需参数的步骤;步骤102,接收需要写入的数据长度E,数据内容Dz,计算数据块数N,设n=0的步骤;步骤103,创建备份数据元数据文件Fb、备份数据存储文件Fw,设备份数据存储文件偏移量q=0,设备份数据偏移量V=0,将Fb、Fw的绝对路写入到配置文件Fs中的步骤;步骤104,创建哈希表K的步骤;步骤105,获得备份数据偏移量V,长度为分块长度S的写入数据Dw、写入数据长度Dwt的步骤;步骤106,判断写入数据长度Dwt是否等于分块长度S,如是转步骤107,否转步骤121;步骤107,设j=0,设M=0,计算Dw按照64bit划分的长度Ds的步骤;步骤108,执行M和Dw[j*8]或运算的步骤;步骤109,判断M是否为0,如是转步骤110,否则转步骤115;步骤110,j自加1的步骤;步骤111,判断j小于Ds,如是转步骤112,否则转步骤108;步骤112,向备份数据元数据文件Fb添加一条备份数据为全零的记录Ln的步骤;步骤113,n自加1,V自加分块大小S的步骤;步骤114,判断n<N,如是转步骤105,否则转步骤123;步骤115,计算写入数据Dw的散列值hw的步骤;步骤116,判断Dw是否为重复数据,如是转步骤117,否则转步骤118;步骤117,从Kx中得到D,向备份数据元数据文件Fb添加一条备份数据为重复数据的记录Ln的步骤;步骤118,压缩Dw,获得内容Dwc,长度Dwe,在备份数据存储文件偏移量为q处,写入压缩内容Dwc的步骤;步骤119,向备份数据元数据文件Fb添加一条备份数据为新数据的记录Ln的步骤;步骤120,设置D的值,Dt=q,De=Dwe,添加<hw,D>到哈希表K中,设置q=q+Dwe,转步骤113;步骤121,压缩Dw,获得内容Dwc,长度Dwe,在备份数据存储文件偏移量为q处,写入压缩内容Dwc的步骤;步骤122,向备份数据元数据文件Fb添加一条备份数据为新数据的记录Ln的步骤;步骤123,结束;步骤2,虚拟机备份数据读出及还原的步骤,包括:步骤201,初始化,从配置文件Fs中读出所需参数的步骤;步骤202,获得备份数据偏移量V,读取长度为Dre,读取数据为Dr,设Dr为空的步骤;步骤203,判断读取地址是否超过备份数据长度Max,如是转步骤204,否则转步骤213;步骤204,打开备份数据元数据文件Fb、备份数据存储文件Fw的步骤;步骤205,计算数据块数N,设n=0的步骤;步骤206,从备份数据元数据文件Fb中找到虚拟偏移量等于读取偏移量Dra=V+n*S的记录Lx的步骤;步骤207,判断读出记录Lx描述的备份数据是否为全零,如是转步骤208,否则转步骤214;步骤208,追加长度为分块大小S的全零数据到读取数据Dr的步骤;步骤209,n自增长1的步骤;步骤210,判断n<N,如是转步骤211,否则转步骤206;步骤211,判断读取长度Dre是否等于已读取长度,如是转步骤213,否则转步骤212;步骤212,扔掉读取数据Dr偏移量(Dre)开始的所有数据的步骤;步骤213,返回读取数据Dr,转步骤216;步骤214,从备份数据存储文件Fw的偏移量Lx,t处读出长度为Lx,e的数据片段Dx的步骤;步骤215,利用压缩算法Z,解压数据片段Dx,并追加到读取数据Dr的尾部,转步骤209;步骤216,结束。附图说明图1为本发明模块结构图。图2为本发明重删元数据记录数据结构图。图3为本发明哈希表重删记录数据结构图。图4为本发明虚拟机备份数据重复数据删除流程图。图5为本发明虚拟机备份数据读出及还原流程图。具体实施方式下面结合附图,对本发明做进一步的详细描述。本发明模块结构如图1所示。HypervisorM01,用于描述虚拟化软件,如VMwareEsxi、Hyper-V、XenServer等。备份代理M02,用于描述备份代理软件模块,从HypervisorM01处备份虚拟机数据。重复数据删除模块M03,用于描述具有重复数据删除功能的软件模块,接收备份代理M02传入的备份数据,执行重复数据删除后,将数据存储到备份数据元数据文件Fb和备份数据存储文件Fw;当备份代理M02需要恢复数据时,将备份数据从备份数据元数据文件Fb和备份数据存储文件Fw中读出并还原给备份代理M02。备份数据删除模块M03依赖配置文件Fs存储参数。配置文件Fs,用于描述重复数据删除参数,包括分块大小S、备份数据长度Max、备份数据元数据文件路径Pm,备份数据存储文件路径Ps。分块大小S,用于描述重复数据删除分块的大小,一般为512字节的整数倍。备份数据长度Max,用于描述虚拟机备份数据的最大长度。备份数据元数据文件路径Pm,用于描述备份数据元数据文件Fb的绝对路径,包括路径名和文件名。备份数据存储文件路径Ps,用于描述备份数据存储文件Fw的绝对路径,包括路径名和文件名。散列算法H,用于描述用于重复数据删除的散列算法,如MD5、SHA1、SM3等。压缩算法Z,用于描述用于重复数据删除的压缩/解压算法,压缩/解压算法为无损压缩算法,如Zip、7z、LZW、哈夫曼编码算法、bzip2等,压缩过程定义为Z(),解压过程定义为Zu()。虚拟机备份数据重复数据删除原理为:备份代理M02从HypervisorM01处读出虚拟机备份数据,例如完全备份,然后将备份数据传输给重复数据删除模块M03,重复数据删除模块M03将备份数据按照分块大小S进行分块,然后对分块后的数据进行全零检测、重复数据检测,生成重删记录,将重删记录写入到备份数据元数据文件Fb中,并将非重复数据写入到备份数据存储文件Fw中。虚拟机备份数据读出及还原原理为:当需要恢复数据时,备份代理M02将向重复数据删除模块M03传入需要恢复的虚拟磁盘偏移量V和读取长度Dre,重复数据删除模块M03从备份数据元数据文件Fb中检索对应的重删记录Lx,并根据Lx的数据属性,返回全零或非零数据。备份代理M02将获得的数据写入到HypervisorM01完成数据还原。本发明重删元数据记录数据结构如图2所示。重删元数据记录L,用于描述数据块的重复数据删除状态。重删元数据记录L存储在备份数据元数据文件Fb中。虚拟偏移量Lv,用于描述数据块在虚拟磁盘中的访问地址。存储偏移量Lt,用于描述数据块存储在备份数据存储文件Fw中的访问地址。长度Le,用于描述经过重复数据删除、压缩后的数据长度,其中,-1表示全零数据。状态Ls,用于描述数据重复数据删除状态,0代表新数据,1代表重复数据,2代表全零数据。重删元数据记录L可以使用数组方式进行访问和操作。本发明哈希表重删记录数据结构如图3所示。哈希表重删记录D,用于描述哈希表K中值域(value)的数据结构,哈希表K的键(key)为写入数据Dw的散列值hw。散列值hw的运算为:hw=H(Dw),即将写入数据Dw输入到散列算法H中,所得值为散列值hw。存储偏移量Dt,用于描述写入数据Dw在备份数据存储文件中Fw的存储地址。长度De,用于描述写入数据Dw压缩后的数据长度。本发明虚拟机备份数据重复数据删除流程图如图4所示。步骤T401,初始化,从配置文件Fs中读出所需参数的步骤。步骤T402,接收需要写入的数据长度E,数据内容Dz,计算数据块数N的步骤,即N=E/S,向上取整,设n=0。步骤T403,创建备份数据元数据文件Fb、备份数据存储文件Fw,设备份数据存储文件偏移量q=0,设备份数据偏移量V=0,将Fb、Fw的绝对路写入到配置文件Fs中的步骤。步骤T404,创建哈希表K的步骤;即以写入数据Dw的散列值hw为键(key),以哈希表重删记录D为值(value)。步骤T405,获得备份数据偏移量V,长度为分块长度S的写入数据Dw、写入数据长度Dwt的步骤,即Dw=Dz[V,V+S]。步骤T406,判断写入数据长度Dwt是否等于分块长度S,如是转步骤T407,否转步骤T421。步骤T407,设j=0,设M=0,计算Dw按照64bit划分的长度Ds的步骤,即Ds=S/8。步骤T408,执行M和Dw[j*8]或运算的步骤,即计算M=MORDw[j*8]。步骤T409,判断M是否为0,如是转步骤T410,否则转步骤T415。步骤T410,j自加1的步骤,即(j=j+1)。步骤T411,判断j小于Ds,如是转步骤T412,否则转步骤T408。步骤T412,向备份数据元数据文件Fb添加一条备份数据为全零的记录Ln的步骤,即Ln,v=V,Ln,t=-1,Ln,e=-1,Ln,s=2。步骤T413,n自加1,V自加分块大小S的步骤,即(n=n+1),(V=V+S)。步骤T414,判断n<N的步骤,如是转步骤T405,否则转T423。步骤T415,计算写入数据Dw的散列值hw的步骤,即hw=H(Dw)。步骤T416,判断Dw是否为重复数据,如是转步骤T417,否则转步骤T418,即hw是否存在于哈希表K中,得到Kx。步骤T417,从Kx中得到D,向备份数据元数据文件Fb添加一条备份数据为重复数据的记录Ln的步骤,即Ln,v=V,Ln,t=Dt,Ln,e=De,Ln,s=1。步骤T418,压缩Dw,获得内容Dwc,长度Dwe,在备份数据存储文件偏移量为q处,写入压缩内容Dwc的步骤,即内容Dwc=Z(Dw)。步骤T419,向备份数据元数据文件Fb添加一条备份数据为新数据的记录Ln的步骤,即Ln,v=V,Ln,t=q,Ln,e=Dwe,Ln,s=0。步骤T420,设置D的值,Dt=q,De=Dwe,添加<hw,D>到哈希表K中,设置q=q+Dwe,转步骤T413。步骤T421,压缩Dw,获得内容Dwc,长度Dwe,在备份数据存储文件偏移量为q处,写入压缩内容Dwc的步骤,即内容Dwc=Z(Dw)。步骤T422,向备份数据元数据文件Fb添加一条备份数据为新数据的记录Ln的步骤,即Ln,v=V,Ln,t=q,Ln,e=Dwe,Ln,s=0。步骤T423,结束。本发明虚拟机备份数据读出及还原流程图如图5所示。步骤T501,初始化,从配置文件Fs中读出所需参数的步骤。步骤T502,获得备份数据偏移量V,读取长度为Dre,读取数据为Dr,设Dr为空的步骤。步骤T503,判断读取地址是否超过备份数据长度Max,即V+Dre<Max,如是,转步骤T504,否则转步骤T513。步骤T504,打开备份数据元数据文件Fb、备份数据存储文件Fw的步骤。步骤T505,计算数据块数N,设n=0的步骤,即N=E/S,向上取整。步骤T506,从备份数据元数据文件Fb中找到虚拟偏移量等于读取偏移量Dra=V+n*S的记录Lx的步骤,即Lx,v==Dra。步骤T507,判断读出记录Lx描述的备份数据是否为全零,如是转步骤T508,否则转步骤T514,即判断Lx,s==2。步骤T508,追加长度为分块大小S的全零数据到读取数据Dr的步骤,即Dr=Dr+S个0。步骤T509,n自增长1的步骤,即(n=n+1)。步骤T510,判断n<N,如是转步骤T511,否则转步骤T506。步骤T511,判断读取长度Dre是否等于已读取长度,如是转步骤T513,否则转步骤T512,即Dre==n*S。步骤T512,扔掉读取数据Dr偏移量(Dre)开始的所有数据的步骤。步骤T513,返回读取数据Dr,转步骤T516。步骤T514,从备份数据存储文件Fw的偏移量Lx,t处读出长度为Lx,e的数据片段Dx的步骤。步骤T515,利用压缩算法Z,解压数据片段Dx,并追加到读取数据Dr的尾部,转步骤T509,即Dr=Dr+Zu(Dx),(注:此处“+”表示连接运算)。步骤T516,结束。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1