一种基于虚拟磁盘的数据修复方法、装置及其介质制造方法及图纸

技术编号:34396304 阅读:13 留言:0更新日期:2022-08-03 21:30
本申请公开了一种基于虚拟磁盘的数据修复方法、装置及其介质,涉及虚拟化技术领域,用于进行数据丢失时的修复,针对目前出现数据丢失时无法修复的问题,提供了一种基于虚拟磁盘的数据修复方法,通过对虚拟磁盘内存储的数据进行偏移遍历,以获得虚拟磁盘中各用户数据实际存放的地址,该方法获取到的所述用户数据地址不会因为系统断电或存储设备异常出现丢失;再判断二级索引表中的各用户数据地址是否出现损坏,找到损坏的用户数据地址、并获取其对应的L2表的索引号、以及L2表项的索引号;便可将准确的用户数据地址替换到对应的出现损坏的L2表项中,实现数据的修复。实现数据的修复。实现数据的修复。

【技术实现步骤摘要】
一种基于虚拟磁盘的数据修复方法、装置及其介质


[0001]本申请涉及虚拟化
,特别是涉及一种基于虚拟磁盘的数据修复方法、装置及其介质。

技术介绍

[0002]于如今虚拟化的应用中,一种主流的虚拟磁盘为qcow2格式。qcow2虚拟磁盘将数据拆分成一个个的集群(cluster),然后用一个二级索引表将这些cluster组织起来,第一级称作L1表(L1 Table),每个表项用于存放L2表的地址索引,第二级称作L2表(L2 Table),每个表项用于存放用户数据(Data Cluster)地址,这种二级索引表可称为qcow2的元数据。其中,L1 Table的起始地址位于qcow2虚拟磁盘的表头中,通过该起始地址可以找到L1 Table;L1 Table中存放L2 Table的起始地址,通过L1 Table的内容可以找到L2 Table;L2 Table中存放Data Cluster地址,使用L2 Table的内容就可以找到DataCluster。
[0003]qcow2虚拟磁盘在寻址过程中,为了提高查找数据的效率,经常使用内存中的L2缓存(Cache)记录已经访问过的Data Cluster。当系统断电、存储设备异常时,可能会导致L2 Cache无法下刷到虚拟磁盘中,造成qcow2虚拟磁盘中二级索引表的部分数据出现丢失,也即Data Cluster地址出现损坏。对于该问题,目前通常所采用的方式为校验数据的一致性,当数据一致性未通过校验时,说明该数据出现了丢失的现象。
[0004]目前所使用的校验数据的一致性的方法仅能确定该数据是否发生数据丢失,且在数据一致性校验不通过的情况下直接丢失该数据,无法做到丢失数据的修复。
[0005]所以,现在本领域的技术人员亟需要一种基于虚拟磁盘的数据修复方法,解决目前出现数据丢失时无法修复的问题。

技术实现思路

[0006]本申请的目的是提供一种基于虚拟磁盘的数据修复方法、装置及其介质,解决目前出现数据丢失时无法修复的问题。
[0007]为解决上述技术问题,本申请提供一种基于虚拟磁盘的数据修复方法,包括:
[0008]获取集群的大小、L1表的初始地址和L1表的大小;
[0009]根据L1表的初始地址和L1表的大小,确定各L1表项,并根据L1表项确定各L2表项,根据各L2表项获取各用户数据地址作为第一结果;
[0010]以集群的大小作为偏移量对虚拟磁盘存储的数据进行遍历,以获取各用户数据地址作为第二结果;
[0011]当第一结果中的各用户数据地址出现损坏时,获取其中出现损坏的用户数据地址,以及其对应的L2表的索引号和L2表项的索引号,作为第三结果;
[0012]将第一结果和第二结果进行比对,去除相同的用户数据地址,将第二结果剩余的用户数据地址作为第四结果;
[0013]根据第三结果和第四结果,替换出现损坏的用户数据地址。
[0014]优选地,判断第一结果中的各用户数据地址是否出现损坏包括:
[0015]分别判断各用户数据地址能否被集群的大小整除,若否,则当前用户数据地址出现损坏;
[0016]若是,则判断用户数据地址中是否存在数据,若不存在数据,则判断当前用户数据地址出现损坏。
[0017]优选地,L1表项和L2表项大小为N bits,对虚拟磁盘存储的数据进行遍历,以获取各用户数据地址作为第二结果包括:
[0018]跳过虚拟磁盘的表头,获取自当前地址起N bits数据,作为待判断数据,且每进行一次偏移都获取自当前地址起N bits数据,作为待判断数据;
[0019]判断待判断数据是否等于qcow2关键字、refcount Table关键字、refcount Block关键字或L1表关键字,若否,则将待判断数据作为用户数据地址;
[0020]将所有用户数据地址作为第二结果。
[0021]优选地,对虚拟磁盘存储的数据进行遍历,以获取各用户数据地址作为第二结果包括:
[0022]以只读的方式打开虚拟磁盘,对其中存储的数据进行遍历,以获取各用户数据地址作为第二结果。
[0023]优选地,获取集群的大小、L1表的初始地址和L1表的大小包括:
[0024]获取虚拟磁盘的表头,并解析表头以获取集群的大小、L1表的初始地址和L1表的大小。
[0025]优选地,第一结果、第二结果、第三结果和第四结果存储于不同数据库中。
[0026]优选地,在判断各用户数据地址是否出现损坏,将其中出现损坏的用户数据地址作为第三结果之后,还包括:
[0027]返回提示信息;其中,提示信息包括第三结果。
[0028]为解决上述技术问题,本申请还提供一种基于虚拟磁盘的数据修复装置,包括:
[0029]获取模块,用于获取集群的大小、L1表的初始地址和L1表的大小;
[0030]第一结果确定模块,用于根据L1表的初始地址和L1表的大小,确定各L1表项,并根据L1表项确定各L2表项,遍历各L2表项,以获取各用户数据地址作为第一结果;
[0031]第二结果确定模块,用于以集群的大小作为偏移量对虚拟磁盘存储的数据进行遍历,以获取各用户数据地址作为第二结果;
[0032]第三结果确定模块,用于判断第一结果中的各用户数据地址是否出现损坏,并获取其中出现损坏的用户数据地址对应的L2表的索引号和L2表项的索引号,将各出现损坏的用户数据地址、以及其对应的L2表的索引号和L2表项的索引号作为第三结果;
[0033]第四结果确定模块,用于将第一结果和第二结果进行比对,去除相同的用户数据地址,将第二结果剩余的用户数据地址作为第四结果;其中,第四结果中的用户数据地址与第三结果中的用户数据地址数量相同;
[0034]修复模块,用于根据第三结果和第四结果,替换出现损坏的用户数据地址。
[0035]优选地,还包括:
[0036]提示模块,用于返回提示信息;其中,提示信息包括第三结果。
[0037]为解决上述技术问题,本申请还提供一种基于虚拟磁盘的数据修复装置,包括:
[0038]存储器,用于存储计算机程序;
[0039]处理器,用于执行计算机程序时实现如上述的基于虚拟磁盘的数据修复方法的步骤。
[0040]为解决上述技术问题,本申请还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述的基于虚拟磁盘的数据修复方法的步骤。
[0041]本申请提供的基于虚拟磁盘的数据修复方法,首先通过遍历二级索引表获取基于L1至L2的寻址方式获取到的所有用户数据地址作为第一结果;再通过对虚拟磁盘内存储的数据进行偏移遍历,以获得虚拟磁盘中各用户数据实际存放的地址,该方法获取到的所述用户数据地址不会因为系统断电或存储设备异常导致出现数据丢失,也即遍历获取准确的用户数据地址作为第二结果;之后,判断二级索引表中的各用户数据地址是否出现损坏,找到损坏的用户数据本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于虚拟磁盘的数据修复方法,其特征在于,包括:获取集群的大小、L1表的初始地址和L1表的大小;根据所述L1表的初始地址和所述L1表的大小,确定各L1表项,并根据所述L1表项确定各L2表项,根据各所述L2表项获取各用户数据地址作为第一结果;以所述集群的大小作为偏移量对虚拟磁盘存储的数据进行遍历,以获取各所述用户数据地址作为第二结果;当所述第一结果中的各所述用户数据地址出现损坏时,获取其中出现损坏的所述用户数据地址,以及其对应的L2表的索引号和L2表项的索引号,作为第三结果;将所述第一结果和所述第二结果进行比对,去除相同的所述用户数据地址,将所述第二结果剩余的所述用户数据地址作为第四结果;根据所述第三结果和所述第四结果,替换出现损坏的所述用户数据地址。2.根据权利要求1所述的基于虚拟磁盘的数据修复方法,其特征在于,判断所述第一结果中的各所述用户数据地址是否出现损坏包括:分别判断各所述用户数据地址能否被所述集群的大小整除,若否,则当前所述用户数据地址出现损坏;若是,则判断所述用户数据地址中是否存在数据,若不存在数据,则判断当前所述用户数据地址出现损坏。3.根据权利要求1所述的基于虚拟磁盘的数据修复方法,其特征在于,所述L1表项和所述L2表项大小为N bits,所述对虚拟磁盘存储的数据进行遍历,以获取各所述用户数据地址作为第二结果包括:跳过所述虚拟磁盘的表头,获取自当前地址起N bits数据作为待判断数据,且每进行一次偏移都获取自当前地址起N bits数据,作为所述待判断数据;判断所述待判断数据是否等于qcow2关键字、refcount Table关键字、refcount Block关键字或L1表关键字,若否,则将所述待判断数据作为所述用户数据地址;将所有所述用户数据地址作为第二结果。4.根据权利要求1所述的基于虚拟磁盘的数据修复方法,其特征在于,所述对虚拟磁盘存储的数据进行遍历,以获取各所述用户数据地址作为第二结果包括:以只读的方式打开所述虚拟磁盘,对其中存储的数据进行遍历,以获取各所述用户数据地址作为第二结果。5.根据权利要求1所述的基于虚拟磁盘的数据修复方法,其特征在于,所述获取集群的大小、...

【专利技术属性】
技术研发人员:刘海伟刘为峰
申请(专利权)人:济南浪潮数据技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1