一种虚拟机数据磁盘的卸载方法、装置和介质与流程

文档序号:23146642发布日期:2020-12-01 13:27阅读:165来源:国知局
一种虚拟机数据磁盘的卸载方法、装置和介质与流程

本发明涉及云服务技术领域,特别是涉及一种虚拟机数据磁盘的卸载方法、装置和计算机可读存储介质。



背景技术:

用户在日常使用云平台提供的虚拟机时,常常由于工作需要频繁对虚拟机挂载的数据磁盘进行挂载和卸载操作,而如果此时虚拟机应用或者用户在对数据磁盘进行读写操作时,云平台会不断尝试去卸载该数据磁盘。当读写操作持续时间很长,云平台会放弃卸载该数据磁盘同时提示用户数据磁盘卸载失败。

由于云平台卸载数据磁盘是通过libvirt对虚拟机进行相关操作,而卸载数据磁盘任务属于异步操作,云平台已通知用户数据磁盘卸载失败,但libvirt侧卸载任务还在等待io操作完成之后卸载虚拟机数据磁盘,当数据磁盘的io操作停止之后,虚拟机xml中数据磁盘信息就会被libvirt层删掉,该场景导致云平台维护的磁盘信息与虚拟机磁盘信息不一致,影响数据磁盘的安全使用。当虚拟机上待卸载磁盘有持续io操作时,如果强制卸载磁盘可能会导致用户数据丢失或磁盘损坏。

可见,如何安全卸载数据磁盘,是本领域技术人员需要解决的问题。



技术实现要素:

本发明实施例的目的是提供一种虚拟机数据磁盘的卸载方法、装置和计算机可读存储介质,可以安全卸载数据磁盘,防止用户在卸载数据磁盘时由于存在io操作导致数据磁盘卸载失败或者用户数据丢失等严重问题。

为解决上述技术问题,本发明实施例提供一种虚拟机数据磁盘的卸载方法,包括:

接收目标数据磁盘的卸载指令;

判断所述目标数据磁盘是否存在io操作;

当所述目标数据磁盘存在io操作时,依据所述目标数据磁盘所对应的虚拟机系统类型,调用与所述虚拟机系统类型相匹配的路径获取规则,以获取所述目标数据磁盘在虚拟机上的挂载点;

对所述挂载点对应的文件系统执行冻结操作;

当所述目标数据磁盘不存在io操作或者对所述挂载点对应的文件系统执行冻结操作后,则对所述目标数据磁盘执行卸载操作。

可选地,所述依据所述目标数据磁盘所对应的虚拟机系统类型,调用与所述虚拟机系统类型相匹配的路径获取规则,以获取所述目标数据磁盘在虚拟机上的挂载点包括:

当所述虚拟机系统类型为windows系统时,调用预先设置的qga指令,以获取文件系统的挂载点信息以及所述目标数据磁盘对应的磁盘序列号;

根据所述文件系统的挂载点信息以及所述磁盘序列号,确定出所述目标数据磁盘在所述虚拟机上的挂载点。

可选地,所述依据所述目标数据磁盘所对应的虚拟机系统类型,调用与所述虚拟机系统类型相匹配的路径获取规则,以获取所述目标数据磁盘在虚拟机上的挂载点包括:

当所述虚拟机系统类型为非windows系统时,调用预先设置的虚拟机文件脚本,以获取文件系统的挂载点信息以及所述目标数据磁盘对应的分区路径;

查询所述虚拟机在所述分区路径下对应的磁盘分区信息;

依据所述目标数据磁盘在所述云平台上的序列号,确定出所述目标数据磁盘在所述虚拟机上映射的磁盘信息;

将所述磁盘信息与所述磁盘分区信息进行匹配,确定出所述目标数据磁盘在所述虚拟机上对应的目标磁盘分区信息;

根据所述目标磁盘分区信息以及所述文件系统的挂载点信息,确定出所述目标数据磁盘在虚拟机上的挂载点。

可选地,还包括:

当所述虚拟机被冻结时,在对所述目标数据磁盘执行卸载操作之后对所述虚拟机执行解冻操作。

可选地,在所述依据所述目标数据磁盘所对应的虚拟机系统类型,调用与所述虚拟机系统类型相匹配的路径获取规则,以获取所述目标数据磁盘在虚拟机上的挂载点之前还包括:

当所述目标数据磁盘存在io操作时,展示所述目标数据磁盘存在io操作的提示信息;

当接收到所述目标数据磁盘的确认卸载指令时,则执行所述依据所述目标数据磁盘所对应的虚拟机系统类型,调用与所述虚拟机系统类型相匹配的路径获取规则,以获取所述目标数据磁盘在虚拟机上的挂载点的步骤。

本发明实施例还提供了一种虚拟机数据磁盘的卸载装置,包括接收单元、判断单元、获取单元、冻结单元和卸载单元;

所述接收单元,用于接收目标数据磁盘的卸载指令;

所述判断单元,用于判断所述目标数据磁盘是否存在io操作;

所述获取单元,用于当所述目标数据磁盘存在io操作时,依据所述目标数据磁盘所对应的虚拟机系统类型,调用与所述虚拟机系统类型相匹配的路径获取规则,以获取所述目标数据磁盘在虚拟机上的挂载点;

所述冻结单元,用于对所述挂载点对应的文件系统执行冻结操作;

所述卸载单元,用于当所述目标数据磁盘不存在io操作或者对所述挂载点对应的文件系统执行冻结操作后,则对所述目标数据磁盘执行卸载操作。

可选地,所述获取单元包括调用子单元和确定子单元;

所述调用子单元,用于当所述虚拟机系统类型为windows系统时,调用预先设置的qga指令,以获取文件系统的挂载点信息以及所述目标数据磁盘对应的磁盘序列号;

所述确定子单元,用于根据所述文件系统的挂载点信息以及所述磁盘序列号,确定出所述目标数据磁盘在所述虚拟机上的挂载点。

可选地,所述获取单元包括调用子单元、查询子单元、映射子单元、匹配子单元和确定子单元;

所述调用子单元,用于当所述虚拟机系统类型为非windows系统时,调用预先设置的虚拟机文件脚本,以获取文件系统的挂载点信息以及所述目标数据磁盘对应的分区路径;

所述查询子单元,用于查询所述虚拟机在所述分区路径下对应的磁盘分区信息;

所述映射子单元,用于依据所述目标数据磁盘在所述云平台上的序列号,确定出所述目标数据磁盘在所述虚拟机上映射的磁盘信息;

所述匹配子单元,用于将所述磁盘信息与所述磁盘分区信息进行匹配,确定出所述目标数据磁盘在所述虚拟机上对应的目标磁盘分区信息;

所述确定子单元,用于根据所述目标磁盘分区信息以及所述文件系统的挂载点信息,确定出所述目标数据磁盘在虚拟机上的挂载点。

可选地,还包括解冻单元;

所述解冻单元,用于当所述虚拟机被冻结时,在对所述目标数据磁盘执行卸载操作之后对所述虚拟机执行解冻操作。

可选地,还包括提示单元和确认单元;

所述提示单元,用于当所述目标数据磁盘存在io操作时,展示所述目标数据磁盘存在io操作的提示信息;

所述确认单元,用于当接收到所述目标数据磁盘的确认卸载指令时,则触发所述获取单元执行所述依据所述目标数据磁盘所对应的虚拟机系统类型,调用与所述虚拟机系统类型相匹配的路径获取规则,以获取所述目标数据磁盘在虚拟机上的挂载点的步骤。

本发明实施例还提供了一种虚拟机数据磁盘的卸载装置,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序以实现如上述任意一项所述虚拟机数据磁盘的卸载方法的步骤。

本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任意项所述虚拟机数据磁盘的卸载方法的步骤。

由上述技术方案可以看出,接收目标数据磁盘的卸载指令;判断目标数据磁盘是否存在io操作。当目标数据磁盘存在io操作时,如果此时强制执行目标数据磁盘的卸载操作,会导致目标数据磁盘损坏或者用户数据丢失等严重问题。为了保证目标数据磁盘卸载的安全性,可以依据目标数据磁盘所对应的虚拟机系统类型,调用与虚拟机系统类型相匹配的路径获取规则,以获取目标数据磁盘在虚拟机上的挂载点。挂载点指的是云平台上的目标数据磁盘在虚拟机上的分布位置,对挂载点对应的文件系统执行冻结操作,使得目标数据磁盘上所有io操作暂停,此时对目标数据磁盘执行卸载操作不会对io操作所对应的用户数据造成影响。因此当目标数据磁盘不存在io操作或者对挂载点对应的文件系统执行冻结操作后,则可以对目标数据磁盘执行卸载操作。该技术方案可以支持多种操作系统的虚拟机安全卸载数据磁盘,防止用户在卸载数据磁盘时由于存在io操作导致数据磁盘卸载失败或者用户数据丢失等严重问题,实现了数据磁盘的安全卸载。

附图说明

为了更清楚地说明本发明实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种虚拟机数据磁盘的卸载方法的流程图;

图2为本发明实施例提供的一种虚拟机数据磁盘的卸载装置的结构示意图;

图3为本发明实施例提供的一种虚拟机数据磁盘的卸载装置的硬件结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本发明保护范围。

为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。

接下来,详细介绍本发明实施例所提供的一种虚拟机数据磁盘的卸载方法。图1为本发明实施例提供的一种虚拟机数据磁盘的卸载方法的流程图,该方法包括:

s101:接收目标数据磁盘的卸载指令。

系统中数据磁盘的个数较多,为了便于区分,在本发明实施例中,可以将需要卸载的数据磁盘称作目标数据磁盘。

在实际应用中,用户可以通过云平台提供的用户界面输入目标数据磁盘的卸载指令。

s102:判断目标数据磁盘是否存在io操作。

云平台接收到数据磁盘的卸载指令后,可以判断目标数据磁盘是否存在io操作。

当目标数据磁盘存在io操作时,若直接执行数据磁盘的卸载,往往会导致用户数据的丢失或者目标数据磁盘的损坏。因此,在本发明实施例中,当目标数据磁盘存在io操作时,可以先对目标数据磁盘上的io操作进行冻结处理,即当目标数据磁盘存在io操作时执行s103。

s103:依据目标数据磁盘所对应的虚拟机系统类型,调用与虚拟机系统类型相匹配的路径获取规则,以获取目标数据磁盘在虚拟机上的挂载点。

目标数据磁盘存在io操作时,为了避免io操作与磁盘卸载操作的冲突,可以先对io操作执行冻结处理,此时需要确定出目标数据磁盘在虚拟机上的所有挂载点,挂载点可以看作目标数据磁盘在虚拟机上的分布位置。

虚拟机系统类型可以有多种,不同的系统类型确定目标数据磁盘挂载点的方式有所不同。在本发明实施例中,根据挂载点的不同获取方式,可以将虚拟机系统类型划分为windows系统和非windows系统。其中,非windows系统可以是linux系统或者其它异构操作系统。

在具体实现中,当虚拟机系统类型为windows系统时,可以调用预先设置的qga指令,以获取文件系统的挂载点信息(mountpoint)以及目标数据磁盘对应的磁盘序列号(universallyuniqueidentifier,uuid)。根据文件系统的挂载点信息以及磁盘序列号,可以确定出目标数据磁盘在虚拟机上的挂载点。

文件系统的挂载点信息记载了所有数据磁盘在虚拟机上的分区位置。磁盘序列号为目标数据磁盘的唯一标识码。将目标数据磁盘的磁盘序列号与文件系统的挂载点信息进行匹配,可以确定出目标数据磁盘在虚拟机上的分区位置即挂载点。

当虚拟机系统类型为非windows系统时,可以调用预先设置的虚拟机文件脚本,以获取文件系统的挂载点信息以及目标数据磁盘对应的分区路径。查询虚拟机在分区路径下对应的磁盘分区信息。依据目标数据磁盘在云平台上的序列号,确定出目标数据磁盘在虚拟机上映射的磁盘信息。

在实际应用中,可以到虚拟机/sys/class/block/$name/slaves路径下找到对应磁盘分区信息,其中name即为目标数据磁盘对应的分区路径。到虚拟机内部/dev/disk/by-id路径下获取目标数据磁盘在云平台上的序列号。

依据目标数据磁盘在云平台上的序列号,确定出目标数据磁盘在虚拟机上映射的磁盘信息。在确定出虚拟机在分区路径下对应的磁盘分区信息以及目标数据磁盘在虚拟机上映射的磁盘信息之后,可以将磁盘信息与磁盘分区信息进行匹配,确定出目标数据磁盘在虚拟机上对应的目标磁盘分区信息;根据目标磁盘分区信息以及文件系统的挂载点信息,确定出目标数据磁盘在虚拟机上的挂载点。

举例说明,在获取到文件系统的挂载点信息(mountpoint)以及目标数据磁盘对应的分区路径(name)后,可以执行如下步骤:(1)到虚拟机/sys/class/block/$name/slaves路径下获取到对应的磁盘分区信息,如vdb1,vdb2,vdb3。(2)然后到虚拟机内部/dev/disk/by-id找到云平台的序列号对应的磁盘信息,如云主机/dev/vdb。(3)根据步骤(1)中确定的mountpoint1对应vdb1,mountpoint2对应vdb2,mountpoint3对应vdb3,就可以确定云平台的序列号对应的虚拟机上的挂载点为mountpoint1,mountpoint2和mountpoint3。

s104:对挂载点对应的文件系统执行冻结操作。

当确定出目标数据磁盘在虚拟机上的挂载点之后,便可以直接对所有挂载点对应的文件系统执行冻结操作。

s105:当目标数据磁盘不存在io操作或者对挂载点对应的文件系统执行冻结操作后,则对目标数据磁盘执行卸载操作。

当完成对所有挂载点对应的文件系统的冻结操作之后,此时目标数据磁盘上不存在io操作,不会出现io操作与磁盘卸载操作冲突的问题,因此当目标数据磁盘不存在io操作或者对挂载点对应的文件系统执行冻结操作后,则可以对目标数据磁盘执行卸载操作,保证了目标数据磁盘卸载的安全性。

由上述技术方案可以看出,接收目标数据磁盘的卸载指令;判断目标数据磁盘是否存在io操作。当目标数据磁盘存在io操作时,如果此时强制执行目标数据磁盘的卸载操作,会导致目标数据磁盘损坏或者用户数据丢失等严重问题。为了保证目标数据磁盘卸载的安全性,可以依据目标数据磁盘所对应的虚拟机系统类型,调用与虚拟机系统类型相匹配的路径获取规则,以获取目标数据磁盘在虚拟机上的挂载点。挂载点指的是云平台上的目标数据磁盘在虚拟机上的分布位置,对挂载点对应的文件系统执行冻结操作,使得目标数据磁盘上所有io操作暂停,此时对目标数据磁盘执行卸载操作不会对io操作所对应的用户数据造成影响。因此当目标数据磁盘不存在io操作或者对挂载点对应的文件系统执行冻结操作后,则可以对目标数据磁盘执行卸载操作。该技术方案可以支持多种操作系统的虚拟机安全卸载数据磁盘,防止用户在卸载数据磁盘时由于存在io操作导致数据磁盘卸载失败或者用户数据丢失等严重问题,实现了数据磁盘的安全卸载。

在实际应用中,当需要对目标数据磁盘执行卸载操作时,也可以对目标数据磁盘所对应的虚拟机执行冻结操作,此时虚拟机上所有的文件系统都会被冻结,为了降低对其它数据磁盘的影响,因此当虚拟机被冻结时,在对目标数据磁盘执行卸载操作之后,可以对虚拟机执行解冻操作。

在上述介绍中,当目标数据磁盘上存在io操作时,为了避免io操作与目标数据磁盘的卸载操作存在冲突,会对挂载点对应的文件系统执行冻结操作。考虑到在实际应用中,也可能会存在需要完成io操作之后再对目标数据磁盘执行卸载操作的需求。

因此,在依据目标数据磁盘所对应的虚拟机系统类型,调用与虚拟机系统类型相匹配的路径获取规则,以获取目标数据磁盘在虚拟机上的挂载点之前,当目标数据磁盘存在io操作时,可以展示目标数据磁盘存在io操作的提示信息。

系统接收到目标数据磁盘的确认卸载指令时,则执行依据目标数据磁盘所对应的虚拟机系统类型,调用与虚拟机系统类型相匹配的路径获取规则,以获取目标数据磁盘在虚拟机上的挂载点的步骤。

通过展示目标数据磁盘存在io操作的提示信息,可以便于用户直观的了解目标数据磁盘当前的使用状态。用户可以根据提示信息,选择是否需要继续执行目标数据磁盘的卸载操作,使得目标数据磁盘的卸载操作更加符合用户的实际要求。

图2为本发明实施例提供的一种虚拟机数据磁盘的卸载装置的结构示意图,包括接收单元21、判断单元22、获取单元23、冻结单元24和卸载单元25;

接收单元21,用于接收目标数据磁盘的卸载指令;

判断单元22,用于判断目标数据磁盘是否存在io操作;

获取单元23,用于当目标数据磁盘存在io操作时,依据目标数据磁盘所对应的虚拟机系统类型,调用与虚拟机系统类型相匹配的路径获取规则,以获取目标数据磁盘在虚拟机上的挂载点;

冻结单元24,用于对挂载点对应的文件系统执行冻结操作;

卸载单元25,用于当目标数据磁盘不存在io操作或者对挂载点对应的文件系统执行冻结操作后,则对目标数据磁盘执行卸载操作。

可选地,获取单元包括调用子单元和确定子单元;

调用子单元,用于当虚拟机系统类型为windows系统时,调用预先设置的qga指令,以获取文件系统的挂载点信息以及目标数据磁盘对应的磁盘序列号;

确定子单元,用于根据文件系统的挂载点信息以及磁盘序列号,确定出目标数据磁盘在虚拟机上的挂载点。

可选地,获取单元包括调用子单元、查询子单元、映射子单元、匹配子单元和确定子单元;

调用子单元,用于当虚拟机系统类型为非windows系统时,调用预先设置的虚拟机文件脚本,以获取文件系统的挂载点信息以及目标数据磁盘对应的分区路径;

查询子单元,用于查询虚拟机在分区路径下对应的磁盘分区信息;

映射子单元,用于依据目标数据磁盘在云平台上的序列号,确定出目标数据磁盘在虚拟机上映射的磁盘信息;

匹配子单元,用于将磁盘信息与磁盘分区信息进行匹配,确定出目标数据磁盘在虚拟机上对应的目标磁盘分区信息;

确定子单元,用于根据目标磁盘分区信息以及文件系统的挂载点信息,确定出目标数据磁盘在虚拟机上的挂载点。

可选地,还包括解冻单元;

解冻单元,用于当虚拟机被冻结时,在对目标数据磁盘执行卸载操作之后对虚拟机执行解冻操作。

可选地,还包括提示单元和确认单元;

提示单元,用于当目标数据磁盘存在io操作时,展示目标数据磁盘存在io操作的提示信息;

确认单元,用于当接收到目标数据磁盘的确认卸载指令时,则触发获取单元执行依据目标数据磁盘所对应的虚拟机系统类型,调用与虚拟机系统类型相匹配的路径获取规则,以获取目标数据磁盘在虚拟机上的挂载点的步骤。

图2所对应实施例中特征的说明可以参见图1所对应实施例的相关说明,这里不再一一赘述。

由上述技术方案可以看出,接收目标数据磁盘的卸载指令;判断目标数据磁盘是否存在io操作。当目标数据磁盘存在io操作时,如果此时强制执行目标数据磁盘的卸载操作,会导致目标数据磁盘损坏或者用户数据丢失等严重问题。为了保证目标数据磁盘卸载的安全性,可以依据目标数据磁盘所对应的虚拟机系统类型,调用与虚拟机系统类型相匹配的路径获取规则,以获取目标数据磁盘在虚拟机上的挂载点。挂载点指的是云平台上的目标数据磁盘在虚拟机上的分布位置,对挂载点对应的文件系统执行冻结操作,使得目标数据磁盘上所有io操作暂停,此时对目标数据磁盘执行卸载操作不会对io操作所对应的用户数据造成影响。因此当目标数据磁盘不存在io操作或者对挂载点对应的文件系统执行冻结操作后,则可以对目标数据磁盘执行卸载操作。该技术方案可以支持多种操作系统的虚拟机安全卸载数据磁盘,防止用户在卸载数据磁盘时由于存在io操作导致数据磁盘卸载失败或者用户数据丢失等严重问题,实现了数据磁盘的安全卸载。

图3为本发明实施例提供的一种虚拟机数据磁盘的卸载装置30的硬件结构示意图,包括:

存储器31,用于存储计算机程序;

处理器32,用于执行计算机程序以实现如上述任意实施例所述的虚拟机数据磁盘的卸载方法的步骤。

本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述任意实施例所述的虚拟机数据磁盘的卸载方法的步骤。

以上对本发明实施例所提供的一种虚拟机数据磁盘的卸载方法、装置和计算机可读存储介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1