CN111338759A - 虚拟磁盘校验码生成方法、装置、设备及存储介质 - Google Patents
虚拟磁盘校验码生成方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN111338759A CN111338759A CN202010119593.9A CN202010119593A CN111338759A CN 111338759 A CN111338759 A CN 111338759A CN 202010119593 A CN202010119593 A CN 202010119593A CN 111338759 A CN111338759 A CN 111338759A
- Authority
- CN
- China
- Prior art keywords
- virtual disk
- data
- check
- command
- size
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
- G06F16/128—Details of file system snapshots on the file-level, e.g. snapshot creation, administration, deletion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0664—Virtualisation aspects at device level, e.g. emulation of a storage device or system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45575—Starting, stopping, suspending or resuming virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种虚拟磁盘校验码生成方法,包括:获取虚拟磁盘管理命令并进行解析得到各命令参数;根据命令参数,设置中间参数check_size的值以及确定待校验数据;若校验虚拟磁盘中的数据,则根据指定的虚拟磁盘路径,以只读方式打开虚拟磁盘,并获取虚拟磁盘的容量大小;若check_size的值为预置阈值,则令check_size的值等于虚拟磁盘的容量大小,并从指针偏移量参数offset等于阈值开始,依次按照指定的数据读取粒度读取虚拟磁盘中的数据,直至offset等于check_size的值时结束;依据信息摘要算法,计算虚拟磁盘中所有数据的哈希值并输出。本发明还公开了一种虚拟磁盘校验码生成装置、设备及计算机可读存储介质。本发明满足了虚拟磁盘备份场景下所需的数据检错需求。
Description
技术领域
本发明涉及数据备份技术领域,尤其涉及一种虚拟磁盘校验码生成方法、装置、设备及存储介质。
背景技术
现有技术中,虚拟磁盘作为虚拟机的持久化数据承载体,为支持用户数据回滚,虚拟磁盘的备份机制不可或缺。一般来说,虚拟磁盘的备份是通过在某一个时刻为虚拟磁盘打上一个快照,然后将增量或者全量的快照数据导出到备份存储中(二级存储),当需要回滚时,将增量合并成全量或者直接将全量的数据拉回主存储。存储介质的静默错误,文件***层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等于所述虚拟磁盘的容量大小时结束;
判断读取的所有数据是否全部为0;
若是,则从指针偏移量参数offset等于所述阈值开始,依次按照所述命令参数中指定的数据读取粒度读取所述虚拟磁盘中的数据,直到offset等于check_size的值时结束;
若否,则返回并报错。
可选地,所述信息获取模块还用于:若待校验数据为磁盘文件快照,则根据所述命令参数中指定的磁盘文件快照名称,以只读方式打开磁盘文件快照;获取所述磁盘文件快照的数据量大小;
所述数据读取模块还用于:令check_size等于所述数据量大小,并从指针偏移量参数offset=0开始,依次按照所述命令参数中指定的数据读取粒度读取所述虚拟磁盘中的数据,直到offset等于check_size的值时结束;
所述校验码生成模块还用于:依据信息摘要算法,计算所述磁盘文件快照中所有数据的哈希值并输出,其中,该哈希值为所述磁盘文件快照的校验码。
进一步地,为实现上述目的,本发明还提供一种虚拟磁盘校验码生成设备,所述虚拟磁盘校验码生成设备包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的虚拟磁盘校验码生成程序,所述虚拟磁盘校验码生成程序被所述处理器执行时还实现如上述任一项所述的虚拟磁盘校验码生成程序方法的步骤。
进一步地,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有虚拟磁盘校验码生成程序,所述虚拟磁盘校验码生成程序被处理器执行时还实现如上述任一项所述的虚拟磁盘校验码生成程序方法的步骤。
本发明通过为虚拟磁盘管理命令增加求信息摘要哈希值的方法,当识别用户对虚拟磁盘求信息摘要哈希值时,根据用户需要校验的虚拟磁盘及校验长度从头到尾读取虚拟磁盘的数据,根据信息摘要算法计算哈希值作为虚拟磁盘的校验码,最后将校验码输出。本发明可以便捷得到虚拟磁盘的校验码,从而满足虚拟磁盘备份等场景下所需的数据检错需求。
附图说明
图1为本申请实施例方案涉及的虚拟磁盘校验码生成设备运行环境的结构示意图;
图2为本发明虚拟磁盘校验码生成方法第一实施例的流程示意图;
图3为本发明虚拟磁盘校验码生成方法第二实施例的流程示意图;
图4为本发明虚拟磁盘校验码生成方法第三实施例的流程示意图;
图5为本发明虚拟磁盘校验码生成方法第四实施例的流程示意图;
图6为本发明虚拟磁盘校验码生成装置一实施例的功能模块示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
本申请提供一种虚拟磁盘校验码生成设备。
参照图1,图1为本申请实施例方案涉及的虚拟磁盘校验码生成设备运行环境的结构示意图。
如图1所示,该虚拟磁盘校验码生成设备包括:处理器1001,例如CPU,通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的虚拟磁盘校验码生成设备的硬件结构并不构成对虚拟磁盘校验码生成设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机可读存储介质的存储器1005中可以包括操作***、网络通信模块、用户接口模块以及计算机程序。其中,操作***是管理和控制虚拟磁盘校验码生成设备和软件资源的程序,支持虚拟磁盘校验码生成程序以及其它软件和/或程序的运行。
在图1所示的虚拟磁盘校验码生成设备的硬件结构中,网络接口1004主要用于接入网络;用户接口1003主要用于侦测确认指令和编辑指令等。而处理器1001可以用于调用存储器1005中存储的虚拟磁盘校验码生成程序,并执行以下虚拟磁盘校验码生成方法的各实施例的操作。
基于上述虚拟磁盘校验码生成设备硬件结构,提出本申请虚拟磁盘校验码生成方法的各个实施例。
参照图2,图2为本发明虚拟磁盘校验码生成方法第一实施例的流程示意图。本实施例中,所述虚拟磁盘校验码生成方法包括以下步骤:
步骤S110,获取用户输入的虚拟磁盘管理命令;
本实施例对于生成虚拟磁盘校验码所采用的虚拟磁盘管理命令不限,可以是用于管理虚拟磁盘的工具所支持的各类命令。在一实施例中优选虚拟磁盘管理命令为qemu-img命令。
qemu-img作为qemu-kvm虚拟化的磁盘工具,原生支持各种虚拟磁盘格式及后端接入协议。当前,qemu-img仅支持转换虚拟磁盘格式、修改虚拟磁盘大小、导出虚拟磁盘或其快照数据等功能,而并不支持生成虚拟磁盘数据的校验码。因此,本实施例预先在qemu-img中增加一个导出校验码的命令,以便在输入该命令时生成虚拟磁盘数据的校验码。
步骤S120,若所述虚拟磁盘管理命令为校验码生成命令,则对所述校验码生成命令进行解析,得到所述校验码生成命令的各命令参数;
本实施例中,若用户输入的qemu-img命令为校验码生成命令,也即若为用于生成虚拟磁盘数据的校验码的命令,则先对该校验码生成命令中的各参数进行解析,进而获得与生成虚拟磁盘校验码相关的参数信息,例如,待校验的虚拟磁盘的格式、生成校验码时读取待校验数据的数据读取粒度bufsize以及还包括待校验的对象:虚拟磁盘或磁盘文件快照。其中,虚拟磁盘直接通过磁盘路径进行确定,而磁盘文件快照则通过名称进行确定。
此外,为提升数据校验的灵活性,本实施例中,在生成校验码时,还可以进一步选择指定待校验的数据长度length。
本实施例中,当输入的命令为校验码生成命令时,解析的命令参数主要包括:
(1)解析虚拟磁盘格式,比如磁盘格式是qcow2、raw、vmdk或者其他格式;
(2)解析生成校验码的的虚拟磁盘路径或磁盘文件快照名称;
(3)解析数据读取粒度bufsize参数,bufsize用于指定数据读取并计算md5值的粒度,即每次以bufsize为单位从虚拟磁盘中读取数据并计算md5值;
(4)解析校验长度length参数;
例如,以求某个qcow2文件的校验码为例,输入的qemu-img命令如下所示:
qemu-img md5sum–f qcow2–b 65536–l 10G
–s snap1/var/lib/libvirt/images/test.qcow2
对命令参数进行解析,得到虚拟磁盘格式为:qcow2,数据读取粒度bufsize为65536,校验长度length为10G,所要生成校验码的虚拟磁盘文件为/var/lib/libvirt/images/test.qcow2的快照snap1。
步骤S130,根据所述命令参数,设置中间参数check_size的值以及确定待校验数据;
本实施例中,中间参数check_size为便于生成校验码而引入的内部使用变量,length用于标识求虚拟磁盘中数据的md5校验码对应的数据区间长度。当命令参数中指定校验长度length时,也即用户输入了length的情况下,以用户输入的校验长度为准,作为求虚拟磁盘md5校验码从0开始的区间长度,设置check_size的值为length。而若用户没有输入length,也即没有指定校验长度时,默认对磁盘中所有数据进行校验,设置check_size的值为0。
需要进一步说明的是,本实施例中上述设置length的原因在于:
由于虚拟磁盘是支持resize操作的,当虚拟磁盘执行resize操作之后,其虚拟容量大小也即img_size会相应发生变化,比如说,对于原来为10G的虚拟磁盘resize为15G,那么其容量会变更为15G,而增加的后5G数据此时为全0,然而,因而此时以15G为大小求该虚拟磁盘的md5sum和以10G为大小求该虚拟磁盘的md5sum是不同的。
例如,一个qcow2 test.qcow2文件为10G,打快照snap1,将snap1备份到二级存储,并求md5sum记录到数据库,设为[email protected];
用户对虚拟磁盘执行resize操作进行扩容,扩容为15G,用户再打快照snap2,将snap2与snap1的差量部分备份到二级存储,此时二级存储上的test.qcow2也会为15G,否则无法将差量部分备份过来。
若用户此时要回滚到snap1,则回滚后以15G作为虚拟磁盘大小(这是用户最后所需磁盘容量),数据以snap1的为准,为检验磁盘回滚后数据是否正确,此时要求从二级存储以snap1为基准下载下来的虚拟磁盘校验码,并和之前记录的[email protected]做比较,由于虚拟磁盘容量已发生变化,因此,后续扩容的5G不能用于计算md5sum,否则必然不一致,故加入length参数可用于求虚拟磁盘给定区间的md5sum,而对于虚拟磁盘超出给定区间的部分,需要保证数据全0即可。
可选的,在一具体实施例中,采用如下方式设置中间参数check_size的值:
A、若所述命令参数中指定校验长度,则设置check_size的值等于所述校验长度;
B、若所述命令参数中未指定校验长度,则设置check_size的值等于所述阈值;
可选的,在一具体实施例中,采用如下方式确定待校验数据:
C、若所述命令参数中指定虚拟磁盘路径,则确定待校验数据为虚拟磁盘中的数据;
D、若所述命令参数中指定磁盘文件快照名称,则确定待校验数据为磁盘文件快照。
步骤S140,若待校验数据为虚拟磁盘中的数据,则根据所述命令参数中指定的虚拟磁盘路径,以只读方式打开虚拟磁盘,并获取所述虚拟磁盘的容量大小;
本实施例中,在解析完命令参数后即可执行生成校验码的处理流程。若命令参数中指定对虚拟磁盘进行校验,也即若待校验的数据为虚拟磁盘中的数据,则根据命令参数中指定的虚拟磁盘路径,以只读方式打开虚拟磁盘,然后获取该虚拟磁盘的容量大小img_size。
步骤S150,若check_size的值为预置阈值,则令check_size的值等于所述虚拟磁盘的容量大小,并从指针偏移量参数offset等于所述阈值开始,依次按照所述命令参数中指定的数据读取粒度读取所述虚拟磁盘中的数据,直至offset等于check_size的值时结束;
本实施例中,若用户未指定要校验的数据长度,也即当check_size的值为0时,也即需要对虚拟磁盘中所有数据进行校验,因此令check_size=img_size,并从指针偏移量参数offset=0开始依次以bufsize为粒度读取虚拟磁盘中的数据,直至offset=check_size时结束,也即需要计算[0,check_size)部分数据的md5sum值。其中,指针偏移量参数offset为预置的便于生成校验码所引入的中间参数。
步骤S160,依据信息摘要算法,计算所述虚拟磁盘中所有数据的哈希值并输出,其中,所述哈希值为所述虚拟磁盘的校验码。
本实施例中,在读取到磁盘中数据后,依据md5sum hash算法,计算虚拟磁盘中所有数据的hash值并输出,而该计算得到的hash值即为虚拟磁盘的校验码。
qemu-img作为qemu-kvm虚拟化的磁盘工具,原生支持各种虚拟磁盘格式及后端接入协议。本实施例通过为qemu-img增加求md5值的方法,当识别用户对虚拟磁盘求md5值时,根据用户需要的校验的虚拟磁盘及校验长度从头到尾读取虚拟磁盘的数据,根据md5校验码生成算法计算校验码,最后将校验码输出。本实施例的改进可以很便捷地得到虚拟磁盘的校验码,并兼容qcow2、vmdk、iscsi、rbd等各种虚拟磁盘格式和后端接入协议,从而满足虚拟磁盘备份等场景下所需的数据检错需求。
参照图3,图3为本发明虚拟磁盘校验码生成方法第二实施例的流程示意图。基于上述本发明方法第一实施例,本实施例中,在上述步骤S120之后,还包括:
步骤S210,对所述命令参数进行合法性判断,所述命令参数包括虚拟磁盘格式;
其中,所述合法性判断包括:
A、判断当前待校验的虚拟磁盘格式是否属于可生成校验码的虚拟磁盘格式,若否,则返回并报错;
B、判断数据读取粒度是否与虚拟磁盘扇区大小对齐,若否,则返回并报错;
C、判断所述命令参数中是否存在不支持的命令参数,若是,则返回并报错。
本实施例中,当用户输入用于生成校验码的qemu-img命令时,进一步对解析后的各命令参数进行合法性判断,若合法,则继续下一步处理,否则报错,具体包括:
A、判断当前待校验的虚拟磁盘格式是否属于可生成校验码的虚拟磁盘格式,若否,则返回并报错;虚拟磁盘的格式很多种,比如qcow2、raw、vmdk等,若虚拟磁盘格式不被支持,是无法读取其真实数据的,因此,直接返回错误。
B、判断数据读取粒度bufsize是否与虚拟磁盘扇区大小对齐,若否,则返回并报错;
C、判断所述命令参数中是否存在不支持的命令参数,若是,则返回并报错。比如恢复快照的命令参数-a,md5sum不支持这一参数。
参照图4,图4为本发明虚拟磁盘校验码生成方法第三实施例的流程示意图。基于上述本发明方法第一实施例,本实施例中,在上述步骤S140之后,还包括:
步骤S310,若check_size的值等于所述命令参数中指定的校验长度,则从指针偏移量参数offset等于check_size开始,依次读取虚拟磁盘或磁盘文件快照中的数据,直到offset等于所述虚拟磁盘的容量大小时结束;
步骤S320,判断读取的所有数据是否全部为0;
步骤S330,若是,则从指针偏移量参数offset等于所述阈值开始,依次按照所述命令参数中指定的数据读取粒度读取所述虚拟磁盘中的数据,直到offset等于check_size的值时结束;若否,则返回并报错。
本实施例中,若用户指定了待校验数据的长度,也即若check_size的值为length,则从指针偏移量参数offset=check_size开始,依次读取虚拟磁盘或磁盘文件快照中的数据直到offset=img_size时结束,也即当check_size<img_size时,读取从check_size到img_size部分的数据。
需要说明的是,如果一个虚拟磁盘有过resize操作,其容量会发生变化,但是被扩容的区间,此时为全0数据。对于用户给定length求虚拟磁盘md5值的场景,要求从length到虚拟机实际大小部分全部为0,表示用户对这部分数据没有用非0数据写过,只有这样,用户指定的校验长度length才有意义,因此,若从check_size到img_size部分的数据存在非0数据,则返回并报错,而若从check_size到img_size部分的数据全部为0,则可以生成[0,check_size)部分数据的md5值。
参照图5,图5为本发明虚拟磁盘校验码生成方法第四实施例的流程示意图。基于上述本发明方法第一、二或三实施例,本实施例中,在上述步骤S130之后,还包括:
步骤S410,若待校验数据为磁盘文件快照,则根据所述命令参数中指定的磁盘文件快照名称,以只读方式打开磁盘文件快照;
步骤S420,获取所述磁盘文件快照的数据量大小;
步骤S430,令check_size等于所述数据量大小,并从指针偏移量参数offset=0开始,依次按照所述命令参数中指定的数据读取粒度读取所述虚拟磁盘中的数据,直到offset等于check_size的值时结束;
步骤S440,依据信息摘要算法,计算所述磁盘文件快照中所有数据的哈希值并输出,其中,该哈希值为所述磁盘文件快照的校验码。
本实施例中还可生成磁盘文件快照的校验码。本实施例中,若待校验的数据为磁盘文件快照,则根据命令参数中指定的磁盘文件快照名称,以只读方式打开磁盘文件快照,同时获取磁盘文件快照的数据量大小data_size;
令中间参数check_size=data_size,并从指针偏移量参数offset=0开始依次以bufsize为粒度读取所述虚拟磁盘中的数据直到offset=check_size时结束,依据md5sumhash算法,计算磁盘文件快照中所有数据的hash值并输出,该hash值即为该磁盘文件快照的校验码。
本发明还提供一种虚拟磁盘校验码生成装置。
参照图6,图6为本发明虚拟磁盘校验码生成装置一实施例的功能模块示意图。本实施例中,所述虚拟磁盘校验码生成装置包括:
命令获取模块10,用于获取用户输入的虚拟磁盘管理命令;
解析模块20,用于若所述虚拟磁盘管理命令为校验码生成命令,则对所述校验码生成命令进行解析,得到所述校验码生成命令的各命令参数;
设置模块30,用于根据所述命令参数,设置中间参数check_size的值以及确定待校验数据;
信息获取模块40,用于若待校验数据为虚拟磁盘中的数据,则根据所述命令参数中指定的虚拟磁盘路径,以只读方式打开虚拟磁盘,并获取所述虚拟磁盘的容量大小;
数据读取模块50,用于若check_size的值为预置阈值,则令check_size的值等于所述虚拟磁盘的容量大小,并从指针偏移量参数offset等于所述阈值开始,依次按照所述命令参数中指定的数据读取粒度读取所述虚拟磁盘中的数据,直至offset等于check_size的值时结束;
校验码生成模块60,用于依据信息摘要算法,计算所述虚拟磁盘中所有数据的哈希值并输出,其中,所述哈希值为所述虚拟磁盘的校验码。
基于与上述本申请虚拟磁盘校验码生成方法相同的实施例说明内容,因此本实施例对虚拟磁盘校验码生成装置的实施例内容不做过多赘述。
本实施例中,qemu-img作为qemu-kvm虚拟化的磁盘工具,原生支持各种虚拟磁盘格式及后端接入协议。本实施例通过为qemu-img增加求md5值的方法,当识别用户对虚拟磁盘求md5值时,根据用户需要的校验的虚拟磁盘及校验长度从头到尾读取虚拟磁盘的数据,根据md5校验码生成算法计算校验码,最后将校验码输出。本实施例的改进可以很便捷地得到虚拟磁盘的校验码,并兼容qcow2、vmdk、iscsi、rbd等各种虚拟磁盘格式和后端接入协议,从而满足虚拟磁盘备份等场景下所需的数据检错需求。
可选地,所述设置模块具体用于:
若所述命令参数中指定校验长度,则设置check_size的值等于所述校验长度;若所述命令参数中未指定校验长度,则设置check_size的值等于所述阈值;
若所述命令参数中指定虚拟磁盘路径,则确定待校验数据为虚拟磁盘中的数据;若所述命令参数中指定磁盘文件快照名称,则确定待校验数据为磁盘文件快照。
可选地,所述虚拟磁盘校验码生成装置还包括:
参数校验模块,用于对所述命令参数进行合法性判断,所述命令参数包括虚拟磁盘格式;
其中,所述合法性判断包括:
A、判断当前待校验的虚拟磁盘格式是否属于可生成校验码的虚拟磁盘格式,若否,则返回并报错;
B、判断数据读取粒度是否与虚拟磁盘扇区大小对齐,若否,则返回并报错;
C、判断所述命令参数中是否存在不支持的命令参数,若是,则返回并报错。
可选地,所述数据读取模块还用于:
若check_size的值等于所述命令参数中指定的校验长度,则从指针偏移量参数offset等于check_size开始,依次读取虚拟磁盘或磁盘文件快照中的数据,直到offset等于所述虚拟磁盘的容量大小时结束;
判断读取的所有数据是否全部为0;
若是,则从指针偏移量参数offset等于所述阈值开始,依次按照所述命令参数中指定的数据读取粒度读取所述虚拟磁盘中的数据,直到offset等于check_size的值时结束;
若否,则返回并报错。
可选地,所述信息获取模块还用于:若待校验数据为磁盘文件快照,则根据所述命令参数中指定的磁盘文件快照名称,以只读方式打开磁盘文件快照;获取所述磁盘文件快照的数据量大小;
所述数据读取模块还用于:令check_size等于所述数据量大小,并从指针偏移量参数offset=0开始,依次按照所述命令参数中指定的数据读取粒度读取所述虚拟磁盘中的数据,直到offset等于check_size的值时结束;
所述校验码生成模块还用于:依据信息摘要算法,计算所述磁盘文件快照中所有数据的哈希值并输出,其中,该哈希值为所述磁盘文件快照的校验码。
基于与上述本申请虚拟磁盘校验码生成方法相同的实施例说明内容,因此本实施例对虚拟磁盘校验码生成装置的实施例内容不做过多赘述。
本发明还提供一种计算机可读存储介质,该计算机可读存储介质既可以是非易失性的,也可以是易失性的,具体本发明不做限定。
本实施例中,所述计算机可读存储介质上存储有虚拟磁盘校验码生成程序,所述虚拟磁盘校验码生成程序被处理器执行时还实现如上述任一项实施例中所述的虚拟磁盘校验码生成程序方法的步骤。其中,虚拟磁盘校验码生成程序被处理器执行时所实现的方法可参照本申请虚拟磁盘校验码生成方法的各个实施例,因此不再过多赘述。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器或者网络设备等)执行本发明各个实施例所述的方法。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,这些均属于本发明的保护之内。
Claims (10)
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的值以及确定待校验数据的步骤之后,还包括:
若待校验数据为磁盘文件快照,则根据所述命令参数中指定的磁盘文件快照名称,以只读方式打开磁盘文件快照;
获取所述磁盘文件快照的数据量大小;
令check_size等于所述数据量大小,并从指针偏移量参数offset=0开始,依次按照所述命令参数中指定的数据读取粒度读取所述虚拟磁盘中的数据,直到offset等于check_size的值时结束;
依据信息摘要算法,计算所述磁盘文件快照中所有数据的哈希值并输出,其中,该哈希值为所述磁盘文件快照的校验码。
6.如权利要求1-5中任一项所述的虚拟磁盘校验码生成方法,其特征在于,所述虚拟磁盘管理命令为qemu-img命令。
7.一种虚拟磁盘校验码生成装置,其特征在于,所述虚拟磁盘校验码生成装置包括:
命令获取模块,用于获取用户输入的虚拟磁盘管理命令;
解析模块,用于若所述虚拟磁盘管理命令为校验码生成命令,则对所述校验码生成命令进行解析,得到所述校验码生成命令的各命令参数;
设置模块,用于根据所述命令参数,设置中间参数check_size的值以及确定待校验数据;
信息获取模块,用于若待校验数据为虚拟磁盘中的数据,则根据所述命令参数中指定的虚拟磁盘路径,以只读方式打开虚拟磁盘,并获取所述虚拟磁盘的容量大小;
数据读取模块,用于若check_size的值为预置阈值,则令check_size的值等于所述虚拟磁盘的容量大小,并从指针偏移量参数offset等于所述阈值开始,依次按照所述命令参数中指定的数据读取粒度读取所述虚拟磁盘中的数据,直至offset等于check_size的值时结束;
校验码生成模块,用于依据信息摘要算法,计算所述虚拟磁盘中所有数据的哈希值并输出,其中,所述哈希值为所述虚拟磁盘的校验码。
8.如权利要求7所述的虚拟磁盘校验码生成装置,其特征在于,所述信息获取模块还用于:若待校验数据为磁盘文件快照,则根据所述命令参数中指定的磁盘文件快照名称,以只读方式打开磁盘文件快照;获取所述磁盘文件快照的数据量大小;
所述数据读取模块还用于:令check_size等于所述数据量大小,并从指针偏移量参数offset=0开始,依次按照所述命令参数中指定的数据读取粒度读取所述虚拟磁盘中的数据,直到offset等于check_size的值时结束;
所述校验码生成模块还用于:依据信息摘要算法,计算所述磁盘文件快照中所有数据的哈希值并输出,其中,该哈希值为所述磁盘文件快照的校验码。
9.一种虚拟磁盘校验码生成设备,其特征在于,所述虚拟磁盘校验码生成设备包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的虚拟磁盘校验码生成程序,所述虚拟磁盘校验码生成程序被所述处理器执行时还实现如权利要求1-6中任一项所述的虚拟磁盘校验码生成程序方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有虚拟磁盘校验码生成程序,所述虚拟磁盘校验码生成程序被处理器执行时还实现如权利要求1-6中任一项所述的虚拟磁盘校验码生成程序方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010119593.9A CN111338759A (zh) | 2020-02-26 | 2020-02-26 | 虚拟磁盘校验码生成方法、装置、设备及存储介质 |
PCT/CN2020/118230 WO2021169280A1 (zh) | 2020-02-26 | 2020-09-28 | 虚拟磁盘校验码生成方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010119593.9A CN111338759A (zh) | 2020-02-26 | 2020-02-26 | 虚拟磁盘校验码生成方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111338759A true CN111338759A (zh) | 2020-06-26 |
Family
ID=71181972
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010119593.9A Pending CN111338759A (zh) | 2020-02-26 | 2020-02-26 | 虚拟磁盘校验码生成方法、装置、设备及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN111338759A (zh) |
WO (1) | WO2021169280A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113254394A (zh) * | 2021-05-14 | 2021-08-13 | 平安科技(深圳)有限公司 | 一种快照处理方法、***、设备及存储介质 |
WO2021169280A1 (zh) * | 2020-02-26 | 2021-09-02 | 平安科技(深圳)有限公司 | 虚拟磁盘校验码生成方法、装置、设备及存储介质 |
CN117033084A (zh) * | 2023-10-09 | 2023-11-10 | 武汉吧哒科技股份有限公司 | 虚拟机备份方法、装置、电子设备及存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105302486A (zh) * | 2015-10-20 | 2016-02-03 | 山东乾云启创信息科技股份有限公司 | 一种虚拟化离线桌面块设备存储同步方法 |
CN106951345B (zh) * | 2017-03-28 | 2020-03-13 | 上海爱数信息技术股份有限公司 | 一种虚拟机磁盘数据的一致性测试方法及装置 |
US20190079875A1 (en) * | 2017-09-14 | 2019-03-14 | Citrix Systems, Inc. | Efficient provisioning of virtual machines to endpoint computing environment |
CN109032838B (zh) * | 2018-06-28 | 2022-07-15 | 上海爱数信息技术股份有限公司 | 虚拟机备份恢复数据一致性的自动校验方法 |
CN111338759A (zh) * | 2020-02-26 | 2020-06-26 | 平安科技(深圳)有限公司 | 虚拟磁盘校验码生成方法、装置、设备及存储介质 |
-
2020
- 2020-02-26 CN CN202010119593.9A patent/CN111338759A/zh active Pending
- 2020-09-28 WO PCT/CN2020/118230 patent/WO2021169280A1/zh active Application Filing
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021169280A1 (zh) * | 2020-02-26 | 2021-09-02 | 平安科技(深圳)有限公司 | 虚拟磁盘校验码生成方法、装置、设备及存储介质 |
CN113254394A (zh) * | 2021-05-14 | 2021-08-13 | 平安科技(深圳)有限公司 | 一种快照处理方法、***、设备及存储介质 |
CN113254394B (zh) * | 2021-05-14 | 2023-10-31 | 平安科技(深圳)有限公司 | 一种快照处理方法、***、设备及存储介质 |
CN117033084A (zh) * | 2023-10-09 | 2023-11-10 | 武汉吧哒科技股份有限公司 | 虚拟机备份方法、装置、电子设备及存储介质 |
CN117033084B (zh) * | 2023-10-09 | 2024-01-19 | 武汉吧哒科技股份有限公司 | 虚拟机备份方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2021169280A1 (zh) | 2021-09-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111338759A (zh) | 虚拟磁盘校验码生成方法、装置、设备及存储介质 | |
CN106936441B (zh) | 一种数据压缩方法和装置 | |
CN113127347B (zh) | 一种接口测试方法、装置、设备及可读存储介质 | |
US20120296878A1 (en) | File set consistency verification system, file set consistency verification method, and file set consistency verification program | |
EP3474143B1 (en) | Method and apparatus for incremental recovery of data | |
CN105095074B (zh) | 配置文件的升级测试方法和装置 | |
WO2023000674A1 (zh) | 云硬盘数据压缩备份及恢复方法、装置、设备及存储介质 | |
CN110688358B (zh) | 一种日志收集方法、装置、设备及可读存储介质 | |
CN114564446B (zh) | 一种文件存储的方法、装置、***及存储介质 | |
CN111158948A (zh) | 基于去重的数据存储与校验方法、装置及存储介质 | |
CN109101412B (zh) | 测试文件生成、测试方法、装置、存储介质和计算机设备 | |
CN115617780A (zh) | 数据导入方法、装置、设备及存储介质 | |
CN112153375A (zh) | 基于视频信息的前端性能测试方法、装置、设备及介质 | |
CN108196975B (zh) | 基于多校验和的数据验证方法、装置及存储介质 | |
CN116955207A (zh) | 识别测试用例完成软硬件的自动化测试方法、***及介质 | |
CN112148599A (zh) | 性能压测方法、装置及设备 | |
CN109246297B (zh) | 一种确定移动终端恢复出厂设置时间的方法、装置及存储介质 | |
CN112187564A (zh) | 一种vSAN性能测试方法、装置、计算机设备及存储介质 | |
CN111984473A (zh) | 一种内存快照数据获取方法及相关装置 | |
CN110362534B (zh) | 一种快照验证方法、***及电子设备和存储介质 | |
CN112000342A (zh) | 一种操作***安装方法、装置、设备及存储介质 | |
CN111625459A (zh) | 应用程序测试方法、装置、计算机设备及存储介质 | |
CN113011869A (zh) | 测试数据生成方法、装置和计算机可读存储介质 | |
CN111522737B (zh) | 一种前端界面的自动化测试校验方法、装置及存储介质 | |
CN111625853B (zh) | 一种快照处理方法、装置、设备及可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40030813 Country of ref document: HK |
|
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |