虚拟磁盘校验码生成方法、装置、设备及存储介质制造方法及图纸

技术编号:24682371 阅读:23 留言:0更新日期:2020-06-27 07:43
本发明专利技术公开了一种虚拟磁盘校验码生成方法,包括:获取虚拟磁盘管理命令并进行解析得到各命令参数;根据命令参数,设置中间参数check_size的值以及确定待校验数据;若校验虚拟磁盘中的数据,则根据指定的虚拟磁盘路径,以只读方式打开虚拟磁盘,并获取虚拟磁盘的容量大小;若check_size的值为预置阈值,则令check_size的值等于虚拟磁盘的容量大小,并从指针偏移量参数offset等于阈值开始,依次按照指定的数据读取粒度读取虚拟磁盘中的数据,直至offset等于check_size的值时结束;依据信息摘要算法,计算虚拟磁盘中所有数据的哈希值并输出。本发明专利技术还公开了一种虚拟磁盘校验码生成装置、设备及计算机可读存储介质。本发明专利技术满足了虚拟磁盘备份场景下所需的数据检错需求。

Generation method, device, equipment and storage medium of virtual disk check code

【技术实现步骤摘要】
虚拟磁盘校验码生成方法、装置、设备及存储介质
本专利技术涉及数据备份
,尤其涉及一种虚拟磁盘校验码生成方法、装置、设备及存储介质。
技术介绍
现有技术中,虚拟磁盘作为虚拟机的持久化数据承载体,为支持用户数据回滚,虚拟磁盘的备份机制不可或缺。一般来说,虚拟磁盘的备份是通过在某一个时刻为虚拟磁盘打上一个快照,然后将增量或者全量的快照数据导出到备份存储中(二级存储),当需要回滚时,将增量合并成全量或者直接将全量的数据拉回主存储。存储介质的静默错误,文件系统层bug等问题的存在使得用户面临的一个问题即如何确认备份的数据、备份后回滚的数据是否是用户当时要备份的数据。通常通过校验码机制解决这一问题,然而,当前的校验码生成方式通常只支持对文件的校验码识别。而对于虚拟磁盘,一方面各种格式都有一套自身的数据分配机制,另一方面后端也支持各种接入协议,因此,现有方式无法支持直接导出虚拟磁盘的校验码。
技术实现思路
本专利技术的主要目的在于提供一种虚拟磁盘校验码生成方法、装置、设备及存储介质,旨在解决现有技术无法生成虚拟磁盘的校验码的技术问题。为实现上述目的,本专利技术提供一种虚拟磁盘校验码生成方法,所述虚拟磁盘校验码生成方法包括以下步骤:获取用户输入的虚拟磁盘管理命令;若所述虚拟磁盘管理命令为校验码生成命令,则对所述校验码生成命令进行解析,得到所述校验码生成命令的各命令参数;根据所述命令参数,设置中间参数check_size的值以及确定待校验数据;若待校验数据为虚拟磁盘中的数据,则根据所述命令参数中指定的虚拟磁盘路径,以只读方式打开虚拟磁盘,并获取所述虚拟磁盘的容量大小;若check_size的值为预置阈值,则令check_size的值等于所述虚拟磁盘的容量大小,并从指针偏移量参数offset等于所述阈值开始,依次按照所述命令参数中指定的数据读取粒度读取所述虚拟磁盘中的数据,直至offset等于check_size的值时结束;依据信息摘要算法,计算所述虚拟磁盘中所有数据的哈希值并输出,其中,所述哈希值为所述虚拟磁盘的校验码。可选地,所述根据所述命令参数,设置中间参数check_size的值以及确定待校验数据包括:若所述命令参数中指定校验长度,则设置check_size的值等于所述校验长度;若所述命令参数中未指定校验长度,则设置check_size的值等于所述阈值;若所述命令参数中指定虚拟磁盘路径,则确定待校验数据为虚拟磁盘中的数据;若所述命令参数中指定磁盘文件快照名称,则确定待校验数据为磁盘文件快照。可选地,在所述若所述虚拟磁盘管理命令为校验码生成命令,则对所述校验码生成命令进行解析,得到所述校验码生成命令的各命令参数的步骤之后,还包括:对所述命令参数进行合法性判断,所述命令参数包括虚拟磁盘格式;其中,所述合法性判断包括:A、判断当前待校验的虚拟磁盘格式是否属于可生成校验码的虚拟磁盘格式,若否,则返回并报错;B、判断数据读取粒度是否与虚拟磁盘扇区大小对齐,若否,则返回并报错;C、判断所述命令参数中是否存在不支持的命令参数,若是,则返回并报错。可选地,在所述若待校验数据为虚拟磁盘中的数据,则根据所述命令参数中指定的虚拟磁盘路径,以只读方式打开虚拟磁盘,并获取所述虚拟磁盘的容量大小的步骤之后,还包括:若check_size的值等于所述命令参数中指定的校验长度,则从指针偏移量参数offset等于check_size开始,依次读取虚拟磁盘或磁盘文件快照中的数据,直到offset等于所述虚拟磁盘的容量大小时结束;判断读取的所有数据是否全部为0;若是,则从指针偏移量参数offset等于所述阈值开始,依次按照所述命令参数中指定的数据读取粒度读取所述虚拟磁盘中的数据,直到offset等于check_size的值时结束;若否,则返回并报错。可选地,在所述根据所述命令参数,设置中间参数check_size的值以及确定待校验数据的步骤之后,还包括:若待校验数据为磁盘文件快照,则根据所述命令参数中指定的磁盘文件快照名称,以只读方式打开磁盘文件快照;获取所述磁盘文件快照的数据量大小;令check_size等于所述数据量大小,并从指针偏移量参数offset=0开始,依次按照所述命令参数中指定的数据读取粒度读取所述虚拟磁盘中的数据,直到offset等于check_size的值时结束;依据信息摘要算法,计算所述磁盘文件快照中所有数据的哈希值并输出,其中,该哈希值为所述磁盘文件快照的校验码。可选地,所述虚拟磁盘管理命令为qemu-img命令。进一步地,为实现上述目的,本专利技术还提供一种虚拟磁盘校验码生成装置,所述虚拟磁盘校验码生成装置包括:命令获取模块,用于获取用户输入的虚拟磁盘管理命令;解析模块,用于若所述虚拟磁盘管理命令为校验码生成命令,则对所述校验码生成命令进行解析,得到所述校验码生成命令的各命令参数;设置模块,用于根据所述命令参数,设置中间参数check_size的值以及确定待校验数据;信息获取模块,用于若待校验数据为虚拟磁盘中的数据,则根据所述命令参数中指定的虚拟磁盘路径,以只读方式打开虚拟磁盘,并获取所述虚拟磁盘的容量大小;数据读取模块,用于若check_size的值为预置阈值,则令check_size的值等于所述虚拟磁盘的容量大小,并从指针偏移量参数offset等于所述阈值开始,依次按照所述命令参数中指定的数据读取粒度读取所述虚拟磁盘中的数据,直至offset等于check_size的值时结束;校验码生成模块,用于依据信息摘要算法,计算所述虚拟磁盘中所有数据的哈希值并输出,其中,所述哈希值为所述虚拟磁盘的校验码。。可选地,所述设置模块具体用于:若所述命令参数中指定校验长度,则设置check_size的值等于所述校验长度;若所述命令参数中未指定校验长度,则设置check_size的值等于所述阈值;若所述命令参数中指定虚拟磁盘路径,则确定待校验数据为虚拟磁盘中的数据;若所述命令参数中指定磁盘文件快照名称,则确定待校验数据为磁盘文件快照。可选地,所述虚拟磁盘校验码生成装置还包括:参数校验模块,用于对所述命令参数进行合法性判断,所述命令参数包括虚拟磁盘格式;其中,所述合法性判断包括:A、判断当前待校验的虚拟磁盘格式是否属于可生成校验码的虚拟磁盘格式,若否,则返回并报错;B、判断数据读取粒度是否与虚拟磁盘扇区大小对齐,若否,则返回并报错;C、判断所述命令参数中是否存在不支持的命令参数,若是,则返回并报错。可选地,所述数据读取模块还用于:若check_size的值等于所述命令参数中指定的校验长度,则从指针偏移量参数offset等于check_size开始,依次读取虚拟磁盘或磁盘文件快照中的数据,直到offset等于所述虚拟磁盘的本文档来自技高网...

【技术保护点】
1.一种虚拟磁盘校验码生成方法,其特征在于,所述虚拟磁盘校验码生成方法包括以下步骤:/n获取用户输入的虚拟磁盘管理命令;/n若所述虚拟磁盘管理命令为校验码生成命令,则对所述校验码生成命令进行解析,得到所述校验码生成命令的各命令参数;/n根据所述命令参数,设置中间参数check_size的值以及确定待校验数据;/n若待校验数据为虚拟磁盘中的数据,则根据所述命令参数中指定的虚拟磁盘路径,以只读方式打开虚拟磁盘,并获取所述虚拟磁盘的容量大小;/n若check_size的值为预置阈值,则令check_size的值等于所述虚拟磁盘的容量大小,并从指针偏移量参数offset等于所述阈值开始,依次按照所述命令参数中指定的数据读取粒度读取所述虚拟磁盘中的数据,直至offset等于check_size的值时结束;/n依据信息摘要算法,计算所述虚拟磁盘中所有数据的哈希值并输出,其中,所述哈希值为所述虚拟磁盘的校验码。/n

【技术特征摘要】
1.一种虚拟磁盘校验码生成方法,其特征在于,所述虚拟磁盘校验码生成方法包括以下步骤:
获取用户输入的虚拟磁盘管理命令;
若所述虚拟磁盘管理命令为校验码生成命令,则对所述校验码生成命令进行解析,得到所述校验码生成命令的各命令参数;
根据所述命令参数,设置中间参数check_size的值以及确定待校验数据;
若待校验数据为虚拟磁盘中的数据,则根据所述命令参数中指定的虚拟磁盘路径,以只读方式打开虚拟磁盘,并获取所述虚拟磁盘的容量大小;
若check_size的值为预置阈值,则令check_size的值等于所述虚拟磁盘的容量大小,并从指针偏移量参数offset等于所述阈值开始,依次按照所述命令参数中指定的数据读取粒度读取所述虚拟磁盘中的数据,直至offset等于check_size的值时结束;
依据信息摘要算法,计算所述虚拟磁盘中所有数据的哈希值并输出,其中,所述哈希值为所述虚拟磁盘的校验码。


2.如权利要求1所述的虚拟磁盘校验码生成方法,其特征在于,所述根据所述命令参数,设置中间参数check_size的值以及确定待校验数据包括:
若所述命令参数中指定校验长度,则设置check_size的值等于所述校验长度;若所述命令参数中未指定校验长度,则设置check_size的值等于所述阈值;
若所述命令参数中指定虚拟磁盘路径,则确定待校验数据为虚拟磁盘中的数据;若所述命令参数中指定磁盘文件快照名称,则确定待校验数据为磁盘文件快照。


3.如权利要求1所述的虚拟磁盘校验码生成方法,其特征在于,在所述若所述虚拟磁盘管理命令为校验码生成命令,则对所述校验码生成命令进行解析,得到所述校验码生成命令的各命令参数的步骤之后,还包括:
对所述命令参数进行合法性判断,所述命令参数包括虚拟磁盘格式;
其中,所述合法性判断包括:
A、判断当前待校验的虚拟磁盘格式是否属于可生成校验码的虚拟磁盘格式,若否,则返回并报错;
B、判断数据读取粒度是否与虚拟磁盘扇区大小对齐,若否,则返回并报错;
C、判断所述命令参数中是否存在不支持的命令参数,若是,则返回并报错。


4.如权利要求2所述的虚拟磁盘校验码生成方法,其特征在于,在所述若待校验数据为虚拟磁盘中的数据,则根据所述命令参数中指定的虚拟磁盘路径,以只读方式打开虚拟磁盘,并获取所述虚拟磁盘的容量大小的步骤之后,还包括:
若check_size的值等于所述命令参数中指定的校验长度,则从指针偏移量参数offset等于check_size开始,依次读取虚拟磁盘或磁盘文件快照中的数据,直到offset等于所述虚拟磁盘的容量大小时结束;
判断读取的所有数据是否全部为0;
若是,则从指针偏移量参数offset等于所述阈值开始,依次按照所述命令参数中指定的数据读取粒度读取所述虚拟磁盘中的数据,直到offset等于check_size的值时结束;
若否,则返回并报错。


5.如权利要求1所述的虚拟磁盘校验码生成方法,其特征在于,在所述根据所述命令参数,设置中间参数check_size的值以及确定待校...

【专利技术属性】
技术研发人员:刘仁仕
申请(专利权)人:平安科技深圳有限公司
类型:发明
国别省市:广东;44

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

1