磁盘空间释放方法及装置与流程

文档序号:17856620发布日期:2019-06-11 22:36阅读:502来源:国知局
磁盘空间释放方法及装置与流程

本公开涉及虚拟机技术领域,具体而言,涉及一种磁盘空间释放方法及装置。



背景技术:

一台宿主机上可以同时运行多个虚拟机,多个虚拟机之间相互独立、且每个虚拟机与宿主机之间也相互独立,在提高了宿主机的利用率的同时,虚拟机的磁盘分区也会占用大量的宿主机的存储空间,即使删除了很多虚拟机的磁盘分区中的文件,虚拟机在宿主机上占用的存储空间并未减少,这是因为删除虚拟机的磁盘分区中的文件时,并没有真正清除对应文件的内容,只是简单地做个标记,由此提高删除文件的速度。为了真正地释放虚拟机的磁盘分区中已删除文件占用的多余磁盘空间,现有技术需要进入虚拟机内部系统执行磁盘整理命令,达到释放虚拟机的磁盘分区中多余磁盘空间的目的,但是当虚拟机个数较多时,这种方式低效且容易出错。



技术实现要素:

本公开的目的在于提供一种磁盘空间释放方法及装置,通过在宿主机上执行统一的一条磁盘空间释放命令即可将待释放磁盘空间的目标磁盘分区发送至对应的目标虚拟机,以达到同时释放多个目标虚拟机的目标磁盘分区中多余存储空间的目的,极大地提高了释放目标虚拟机的目标磁盘分区中多余磁盘空间的效率。

为了实现上述目的,本公开采用的技术方案如下:

第一方面,本公开提供了一种磁盘空间释放方法,应用于宿主机,宿主机上运行有多个虚拟机,所述方法包括:接收磁盘空间释放命令;解析磁盘空间释放命令,生成命令标识、以及生成待释放磁盘空间的多个目标虚拟机及与每个目标虚拟机对应的目标磁盘分区;按照预设格式将命令标识及每个目标虚拟机对应的目标磁盘分区封装成多个磁盘空间释放消息;将多个磁盘空间释放消息发送至对应的目标虚拟机,以使对应的目标虚拟机基于对应的磁盘空间释放消息调用预设磁盘空间整理命令对对应的目标虚拟机的磁盘空间进行释放。

第二方面,本公开提供了一种磁盘空间释放方法,应用于运行于宿主机上的虚拟机,所述方法包括:接收宿主机发送的磁盘空间释放消息,其中,磁盘空间释放消息是宿主机按照预设格式将命令标识及目标磁盘分区封装而成的,命令标识、目标磁盘分区及目标虚拟机是宿主机解析磁盘空间释放命令后生成;基于磁盘空间释放消息调用预设磁盘空间整理命令对目标虚拟机的磁盘空间进行释放。

第三方面,本公开还提供了一种磁盘空间释放装置,应用于宿主机,宿主机上运行有至少一个虚拟机,所述装置包括命令接收模块、解析模块、封装模块和发送模块。命令接收模块用于接收磁盘空间释放命令;解析模块用于解析磁盘空间释放命令,生成命令标识、以及生成待释放磁盘空间的多个目标虚拟机及与每个目标虚拟机对应的目标磁盘分区;封装模块用于按照预设格式将命令标识及每个目标虚拟机对应的目标磁盘分区封装成多个磁盘空间释放消息;发送模块用于将多个磁盘空间释放消息发送至对应的目标虚拟机,以使对应的目标虚拟机基于对应的磁盘空间释放消息调用预设磁盘空间整理命令对对应的虚拟机的磁盘空间进行释放。

第四方面,本公开提供了一种磁盘空间释放装置,应用于运行于宿主机上的虚拟机,所述装置包括:消息接收模块和释放模块。消息接收模块用于接收宿主机发送的磁盘空间释放消息,其中,磁盘空间释放消息是宿主机按照预设格式将命令标识及目标磁盘分区封装而成的,命令标识、目标磁盘分区及目标虚拟机是宿主机解析磁盘空间释放命令后生成;释放模块用于基于磁盘空间释放消息调用预设磁盘空间整理命令对目标虚拟机的磁盘空间进行释放。

第五方面,本公开提供一种宿主机,所述宿主机包括:处理器;存储器,用于存储一个或多个程序,当所述一个或多个程序被所述处理器执行时,使得所述处理器实现上述应用于宿主机的磁盘空间释放方法或者应用于运行于宿主机上的虚拟机的磁盘空间释放方法。

第六方面,本公开提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述应用于宿主机的磁盘空间释放方法或者应用于运行于宿主机上的虚拟机的磁盘空间释放方法。

相对现有技术,本公开提供一种磁盘空间释放方法及装置,首先,用户在宿主机上发送用于释放虚拟机的磁盘空间的磁盘空间释放命令,宿主机对收到的磁盘空间释放命令进行解析,生成命令标识、以及生成待释放磁盘空间的多个目标虚拟机及与每个目标虚拟机对应的目标磁盘分区,接下来,宿主机按照预设格式将命令标识及每个目标虚拟机对应的目标磁盘分区封装成多个磁盘空间释放消息,最后,宿主机将多个磁盘空间释放消息发送至对应的目标虚拟机,以使对应的目标虚拟机基于对应的磁盘空间释放消息调用预设磁盘空间整理命令、对对应的目标虚拟机的对应的目标磁盘分区的磁盘空间进行释放。与现有技术相比,本公开通过在宿主机上执行统一的一条磁盘空间释放命令即可将待释放磁盘空间的目标磁盘分区发送至对应的目标虚拟机,以达到同时释放多个目标虚拟机的目标磁盘分区对应的磁盘中多余存储空间的目的,极大地提高了释放目标虚拟机的对应的磁盘中多余磁盘空间的效率。

为使本公开的上述目的、特征和优点能更明显易懂,下文特举实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本公开的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1示出了本公开提供的宿主机的方框示意图。

图2示出了本公开提供的应用于宿主机的磁盘空间释放方法流程图。

图3为图2示出的步骤s102的子步骤流程图。

图4示出了本公开提供的应用于虚拟机的磁盘空间释放方法流程图。

图5示出了本公开提供的应用于宿主机的磁盘空间释放装置的方框示意图。

图6示出了本公开提供的应用于虚拟机的磁盘空间释放装置的方框示意图。

图标:100-宿主机;101-存储器;102-通信接口;103-处理器;104-总线;200-应用于宿主机的磁盘空间释放装置;201-命令接收模块;202-解析模块;203-封装模块;204-发送模块;400-应用于虚拟机的磁盘空间释放装置;401-消息接收模块;402-释放模块。

具体实施方式

下面将结合本公开中附图,对本公开中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本公开的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

请参照图1,图1示出了本公开提供的宿主机100的方框示意图。宿主机100可以是,但不限于,主机、实体服务器。宿主机100的操作系统可以是,但不限于,windows系统、linux系统等。所述宿主机100包括存储器101、通信接口102、处理器103和总线104,所述存储器101、通信接口102和处理器103通过总线104连接,处理器103用于执行存储器101中存储的可执行模块,例如上述计算机程序。

其中,存储器101可能包含高速随机存取存储器(ram:randomaccessmemory),也可能还包括非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器。通过至少一个通信接口102(可以是有线或者无线)实现宿主机100与外部存储设备之间的通信连接。

总线104可以是isa总线、pci总线或eisa总线等。图1中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。

其中,存储器101用于存储程序,例如图5所示的应用于宿主机的磁盘空间释放装置200。应用于宿主机的磁盘空间释放装置200包括至少一个可以软件或固件(firmware)的形式存储于所述存储器101中或固化在所述宿主机100的操作系统(operatingsystem,os)中的软件功能模块。所述处理器103在接收到执行指令后,执行所述程序以实现本公开上述实施例揭示的应用于宿主机100的磁盘空间释放方法。

需要说明的是,由于虚拟机是运行在宿主机100上的一个软件模块,因此,应用于虚拟机的磁盘空间释放装置400亦存储于宿主机100的存储器101中,且由宿主机100的处理器103执行。

第一实施例

请参照图2,图2示出了本公开提供的应用于宿主机100的磁盘空间释放方法流程图。所述方法包括以下步骤:

步骤s101,接收磁盘空间释放命令。

在本公开中,对于宿主机100来说,虚拟机是宿主机100上运行的一个应用程序,一个宿主机100上可以运行多个虚拟机,虚拟机的一个磁盘是宿主机100磁盘上存储的一个预设格式的文件,一个虚拟机可以有多个磁盘,每个磁盘对应宿主机100磁盘上一个预设格式的文件,每个磁盘可以划分出一个或者多个磁盘分区,例如,宿主机100上运行有两个虚拟机:vm1和vm2,其中,vm1有3个磁盘,分别为1#磁盘、2#磁盘和3#磁盘,vm2有2个磁盘,分别为4#磁盘和5#磁盘,每个磁盘划分一个磁盘分区,则vm1有3个磁盘分区,分别为1#磁盘分区、2#磁盘分区和3#磁盘分区、vm2有2个磁盘分区,分别为4#磁盘分区和5#磁盘分区。用户可以根据具体需求采用不同的磁盘空间释放命令的格式对指定的虚拟机的指定磁盘的分区对应的磁盘空间进行释放,例如,用户可以针对宿主机100上所有虚拟机上的所有磁盘分区对应的磁盘空间进行释放,也可以针对宿主机100指定的一个或者多个虚拟机的所有磁盘分区对应的磁盘空间进行释放,还可以针对宿主机100指定的一个或者多个虚拟机的指定的磁盘分区对应的磁盘空间进行释放。

需要说明的是,由于在虚拟机上删除文件的时候,只是对待删除的文件作一个删除标志就返回用户删除文件成功,并没有对待删除文件占用的宿主机100的磁盘空间进行真正的释放,本公开的磁盘空间释放命令,是针对做了删除标志的那些虚拟机的磁盘占用的磁盘空间进行真正释放,以减少虚拟机的磁盘占用的宿主机100的磁盘空间。

步骤s102,解析磁盘空间释放命令,生成命令标识、以及生成待释放磁盘空间的多个目标虚拟机及与每个目标虚拟机对应的目标磁盘分区。

在本公开中,为了简化用户操作,磁盘空间释放命令可以不包括需要释放磁盘分区的所有虚拟机及对应的磁盘分区,用户可以根据不同的磁盘空间释放需求不同,采用的不同的磁盘空间释放命令的格式,宿主机100通过解析不同格式的磁盘空间释放命令生成对应的命令标识、待释放磁盘空间的多个目标虚拟机及与每个目标虚拟机对应的目标磁盘分区,然后向目标虚拟机发送命令标识及对应的目标磁盘分区,以达到目标虚拟机释放对应的目标磁盘分区上的磁盘空间的目的。

具体来说,解析磁盘空间释放命令,生成命令标识、以及生成待释放磁盘空间的多个目标虚拟机及与每个目标虚拟机对应的目标磁盘分区可以至少包括如下三种情形:(1)当磁盘空间释放命令中未包括虚拟机的标识及与虚拟机的标识对应的虚拟机的磁盘分区时,首先获取每个虚拟机的标识及与每个虚拟机的标识对应的虚拟机的磁盘分区,然后将每个虚拟机的标识对应的虚拟机确定为目标虚拟机、及与每个目标虚拟机对应的磁盘分区确定为与每个目标虚拟机对应的目标磁盘分区;(2)当磁盘空间释放命令中包括虚拟机的标识但未包括与虚拟机的标识对应的虚拟机的磁盘分区时,首先获取与虚拟机的标识对应的虚拟机的磁盘分区,然后将虚拟机的标识对应的虚拟机确定为目标虚拟机、及与虚拟机对应的磁盘分区确定为与目标虚拟机对应的目标磁盘分区;(3)当磁盘空间释放命令中包括虚拟机的标识及与虚拟机的标识对应的虚拟机的磁盘分区时,将虚拟机的标识对应的虚拟机确定为目标虚拟机、及与虚拟机的标识对应的虚拟机的磁盘分区确定为与目标虚拟机对应的目标磁盘分区。

在本公开中,磁盘空间释放命令可以只包括命令标识,也可以既包括命令标识,又包括虚拟机标识,又可以同时包括命令标识、虚拟机标识及对应的目标磁盘分区。

在本公开中,命令标识是命令的唯一标志,可以是程序开发者定义的一串特定字符串,例如,命令标识定义为host-fstrim。由于操作系统或者磁盘工具提供的命令不够灵活、不够自动化,不同的需求需要执行不同的步骤才能达到对应的效果,为了统一用户不同的实际需求的场景、简化用户的操作,本公开对操作系统或者磁盘工具提供的命令进行再次封装,对外提供统一的命令标识,根据用户输入的带有该命令标识的命令格式进行解析,使用一条命令实现不同实际需求场景的效果。例如,fstrim是磁盘工具提供的用于整理磁盘空间的命令,执行fstrim命令需要指定待整理的磁盘空间中的一个或者多个磁盘分区名称,如果需要释放一个磁盘中所有的多余空间,需要对磁盘中所有的磁盘分区依次执行一次fstrim命令,在本公开中,将fstrim命令进行再次封装,对外提供统一的命令标识host-fstrim,并在虚拟机预先存储命令标识host-fstrim与fstrim之间的对应关系,当用户需要释放所有磁盘中的多余空间时,只需要在命令格式中输入host-fstrim,不需要输入所有磁盘中的所有磁盘分区名称,host-fstrim对应的命令对用户输入的命令格式进行解析后,根据预先存储的发现没有指定磁盘中的磁盘分区名称,自动执行获取所有磁盘的命令获取所有磁盘分区,然后将命令标识host-fstrim发送至虚拟机,虚拟机依据预先存储的命令标识host-fstrim与fstrim之间的对应关系,确定与host-fstrim对应的命令为fstrime,虚拟机对每个磁盘分区执行一次fstrim命令,达到释放所有磁盘的磁盘空间的效果。

需要说明的是,在本公开中,命令标识也可以是命令名称,命令名称是操作系统或者磁盘工具提供的命令的名字,该命令名称对应虚拟机上实际执行的磁盘空间整理命令,此时,宿主机100预先存储磁盘空间释放命令的命令关键字与命令名称对应关系,根据输入的磁盘空间释放命令的字符串,提取该字符串中的命令关键字,然后,依据预先存储的磁盘空间释放命令的命令关键字与命令名称对应关系,确定与该磁盘空间释放命令对应的命令名称,然后将命令名称发送至虚拟机,以使虚拟机执行与对应的命令名称对应的命令,以释放目标磁盘分区的磁盘空间。

请参照图3,步骤s102还包括以下子步骤:

子步骤s1021,当磁盘空间释放命令中未包括虚拟机的标识及与虚拟机的标识对应的虚拟机的磁盘分区时,获取预先存储的每个虚拟机的标识及与每个虚拟机的标识对应的虚拟机的磁盘分区。

在本公开中,虚拟机的标识是表征虚拟机的唯一标志,虚拟机的标识可以是表示虚拟机的唯一名字或者唯一编号,当用户需要释放宿主机100上每个虚拟机及每个虚拟机的每个磁盘时,用户输入的磁盘释放命令的格式可以只包括命令标识,不包括虚拟机的标识及与虚拟机的标识对应的虚拟机的磁盘分区,此时,宿主机100可以首先获取每个虚拟机的标识,再获取每个虚拟机的标识对应的虚拟机的每个磁盘分区。例如,宿主机100上运行有两个虚拟机:vm1和vm2,其中,vm1有3个磁盘,每个磁盘对应一个磁盘分区,分别为1#磁盘分区、2#磁盘分区和3#磁盘分区,vm2有2个磁盘,每个磁盘对应一个磁盘分区,分别为4#磁盘分区和5#磁盘分区,用户输入的命令格式为:host-fstrim,即用户未指定虚拟机的标识及与虚拟机的标识对应的虚拟机的磁盘分区,宿主机100可以首先获取虚拟机的标识:vm1和vm2,再分别获取vm1对应的1#磁盘分区、2#磁盘分区和3#磁盘分区,接下来,分别获取vm2对应的4#磁盘分区和5#磁盘分区。

子步骤s1022,将每个虚拟机的标识对应的虚拟机确定为目标虚拟机、及将与每个目标虚拟机对应的磁盘分区确定为与每个目标虚拟机对应的目标磁盘分区。

在本公开中,用户输入的命令格式中不包括虚拟机的标识及与虚拟机的标识对应的虚拟机的磁盘分区,该命令格式意味着待释放的磁盘空间为宿主机100上每一个虚拟机的每一个磁盘分区,即目标虚拟机为宿主机100上的每一个虚拟机,每一个虚拟机上的每一个磁盘分区为该目标虚拟机对应的目标磁盘分区。例如,用户输入的命令格式为:host-fstrim,即用户未指定虚拟机的标识及与虚拟机的标识对应的虚拟机的磁盘分区,虚拟机有两个vm1和vm2,vm1有2个磁盘,对应的磁盘分区分别为1#磁盘分区/dev/hda1和2#磁盘分区/dev/hda2;vm2有2个磁盘,对应的磁盘分区分别为3#磁盘分区/dev/hda34#磁盘分区/dev/hda4,则目标虚拟机有两个:vm1和vm2,与目标虚拟机vm1对应的目标磁盘分区为:/dev/hda1、/dev/hda2,与目标虚拟机vm2对应的目标磁盘分区为:/dev/hda3、/dev/hda4,表征需要释放vm1虚拟机的/dev/hda1和/dev/hda2的磁盘分区对应的磁盘上的磁盘空间,需要释放vm2虚拟机的/dev/hda3和/dev/hda4的磁盘分区对应的磁盘上的磁盘空间。

子步骤s1023,当磁盘空间释放命令中包括虚拟机的标识但未包括与虚拟机的标识对应的虚拟机的磁盘分区时,获取与预先存储的虚拟机的标识对应的虚拟机的磁盘分区。

在本公开中,用户需要释放指定虚拟机的每个磁盘分区时,输入的磁盘空间释放命令的命格式需要包括虚拟机的标识,不包括该虚拟机的标识对应的磁盘分区,此时,宿主机100自动获取该虚拟机的标识对应的虚拟机的每个磁盘分区。

子步骤s1024,将虚拟机的标识对应的虚拟机确定为目标虚拟机、及将与虚拟机对应的磁盘分区确定为与目标虚拟机对应的目标磁盘分区。

在本公开中,当目标虚拟机的磁盘分区为一个时,目标磁盘分区就只有一个,当目标虚拟机的磁盘分区为多个时,目标磁盘分区就有多个,例如,虚拟机vm1有2个磁盘,每个磁盘对应一个磁盘分区,分别对应为1#磁盘分区和2#磁盘分区,对应的磁盘分区名称为/dev/hda1和/dev/hda2,用户输入的命令格式为:host-fstrim-mvm1,即用户输入的命令格式中包括虚拟机的标识vm1,但未包括虚拟机vm1的磁盘分区,则目标磁盘分区有2个:/dev/hda1、/dev/hda2。

子步骤s1025,当磁盘空间释放命令中包括虚拟机的标识及与虚拟机的标识对应的虚拟机的磁盘分区时,将虚拟机的标识对应的虚拟机确定为目标虚拟机、及将与虚拟机的标识对应的虚拟机的磁盘分区确定为与目标虚拟机对应的目标磁盘分区。

在本公开中,磁盘空间释放命令的命令格式中可以包括多个虚拟机的标识及与每个虚拟机的标识对应的虚拟机的一个磁盘分区,例如,虚拟机有两个vm1和vm2,vm1有2个磁盘,每个磁盘对应一个分区,分别为1#磁盘和2#磁盘,对应的磁盘分区为/dev/hda1和/dev/hda2;vm2有2个磁盘,分别为3#磁盘和4#磁盘,对应的磁盘分区为/dev/hda3和/dev/hda4,用户输入的命令格式为:host-fstrim-mvm1vm2/dev/hda2/dev/hda3,即用户指定了虚拟机vm1,且指定了释放虚拟机vm1的磁盘分区/dev/hda2对应的磁盘空间,同时指定了虚拟机vm2,且指定了释放虚拟机vm2对应的磁盘分区/dev/hda3的磁盘空间,则目标虚拟机有两个:vm1和vm2,目标虚拟机vm1的目标磁盘分区为/dev/hda2、目标虚拟机vm2的目标磁盘分区为/dev/hda3。

步骤s103,按照预设格式将命令标识及每个目标虚拟机对应的目标磁盘分区封装成多个磁盘空间释放消息。

在本公开中,作为一种实现方式,预设格式可以是json对象格式,当目标磁盘分区为多个时,封装成的磁盘空间释放消息也为多个,例如,按照json对象格式将命令标识及目标磁盘分区封装成的磁盘空间释放消息为:{"execute":"fstrim","arguments":{"message":"/dev/hda2"}},其中,fstrim为命令标识,/dev/hda2为目标磁盘分区。

步骤s104,将多个磁盘空间释放消息发送至目标虚拟机,以使对应的目标虚拟机基于对应的磁盘空间释放消息调用预设磁盘空间整理命令对对应的目标虚拟机的磁盘空间进行释放。

在本公开中,为了实现宿主机100将多个磁盘空间释放消息发送至目标虚拟机,宿主机100和目标虚拟机之间通过qemu-ga(qemuguestagent)进行交互,qemu-ga是一个运行在虚拟机内部的普通应用程序(可执行文件名称默认为qemu-ga,服务名称默认为qemu-guest-agent),其目的是在不依赖网络的情况下实现宿主机100和目标虚拟机之间的消息交互。

作为一种实现方式,将磁盘空间释放消息发送至虚拟机可以通过在宿主机100上执行qemu-ga提供的virshqemu-agent-command命令完成,例如,执行命令:

virshqemu-agent-commandvm1--cmd

'{"execute":"fstrim","arguments":{"message":"/dev/hda2"}}'。

将命令标识fstrim和目标磁盘分区/dev/hda2发送至虚拟机vm1,虚拟机vm1调用预设磁盘空间整理命令fstrim对磁盘分区/dev/hda2对应的磁盘空间进行释放。

在本公开中,宿主机100上运行的qemu-ga负责将命令标识和目标磁盘分区按照预设格式封装成磁盘空间释放消息后发送至目标虚拟机,目标虚拟机上的运行的qemu-ga负责接收并解封装该磁盘空间释放消息,得到命令标识和目标磁盘分区,最终根据命令标识和目标磁盘分区调用预设磁盘空间整理命令对目标虚拟机的目标磁盘分区的磁盘空间进行释放,因此,本公开还包括步骤s201和步骤s202。

请参照图4,图4示出了本公开提供的应用于虚拟机的基于qemu-ga的磁盘空间释放方法流程图。

步骤s201,接收宿主机发送的磁盘空间释放消息,其中,磁盘空间释放消息是宿主机按照预设格式将命令标识及目标磁盘分区封装而成的,命令标识、目标磁盘分区及目标虚拟机是宿主机解析磁盘空间释放命令后生成。

步骤s202,基于磁盘空间释放消息调用预设磁盘空间整理命令对目标虚拟机的磁盘空间进行释放。

在本公开中,基于磁盘空间释放消息调用预设磁盘空间整理命令的实现方式可以是:

首先,对磁盘空间释放消息进行解封装,得到命令标识及目标磁盘分区;

其次,基于目标磁盘分区执行命令标识对应的命令,以调用预设磁盘空间整理命令对目标虚拟机的目标磁盘分区的磁盘空间进行释放。

在本公开中,目标虚拟机上的运行的qemu-ga得到命令标识及目标磁盘分区后,可以通过调用预设的与命令标识对应的磁盘空间整理命令,对目标磁盘分区的磁盘空间进行释放。

需要说明的是,虚拟机的一个磁盘也可以对应多个磁盘分区,可以通过对一个磁盘分区使用磁盘空间整理命令释放该磁盘分区对应的磁盘的多余存储空间,从而使得虚拟机在宿主机100上占用的多余存储空间得以释放。

在本公开中,通过在宿主机100上统一操作,将磁盘空间释放命令的命令标识及待释放磁盘空间的目标虚拟机对应的磁盘分区通过宿主机100运行的qemu-ga发送至目标虚拟机,由目标虚拟机运行的qemu-ga依据命令标识及目标虚拟机对应的磁盘分区执行对应的磁盘空间整理命令,实现同时释放多个虚拟机的磁盘分区中多余存储空间,与现有技术相比,具有以下有益效果:

第一,由于无需进入虚拟机进行操作,在宿主机100上执行命令即可实现释放虚拟机的磁盘空间,提高了释放虚拟机的磁盘分区中多余磁盘空间的效率,最终实现对应宿主机100上多余空间的高效释放。

第二,采用一条命令即可实现批量对宿主机100上所有虚拟机的磁盘空间的释放和指定虚拟机的所有磁盘的磁盘空间的释放,大大简化了用户的操作。

第三,支持采用不同的命令格式实现用户的不同需求,提高了磁盘空间释放的灵活性。

第二实施例

请参照图5,图5示出了本公开提供的应用于宿主机的磁盘空间释放装置200的方框示意图,应用于宿主机的磁盘空间释放装置200包括命令接收模块201、解析模块202、封装模块203和发送模块204。

命令接收模块201,用于接收磁盘空间释放命令。

在本公开中,命令接收模块201用于执行步骤s101。

解析模块202,用于解析磁盘空间释放命令,生成命令标识、以及生成待释放磁盘空间的多个目标虚拟机及与每个目标虚拟机对应的目标磁盘分区。

在本公开中,解析模块202用于执行步骤s102及其子步骤s1021-s1025。

封装模块203,用于按照预设格式将命令标识及每个目标虚拟机对应的目标磁盘分区封装成多个磁盘空间释放消息。

在本公开中,封装模块203用于执行步骤s103。

发送模块204,用于将多个磁盘空间释放消息发送至对应的目标虚拟机,以使对应的目标虚拟机基于对应的磁盘空间释放消息调用预设磁盘空间整理命令对对应的目标虚拟机的磁盘空间进行释放。

在本公开中,发送模块204用于执行步骤s104。

请参照图6,图6示出了本公开提供的应用于虚拟机的磁盘空间释放装置400的方框示意图,应用于虚拟机的磁盘空间释放装置400包括消息接收模块401和释放模块402。

消息接收模块401,用于接收宿主机发送的磁盘空间释放消息,其中,磁盘空间释放消息是宿主机按照预设格式将命令表示会及目标磁盘分区封装而成的,命令标识、目标磁盘分区及目标虚拟机是宿主机解析磁盘空间释放命令后生成。

在本公开中,消息接收模块401用于执行步骤s201。

释放模块402,用于基于磁盘空间释放消息调用预设磁盘空间整理命令对目标虚拟机的磁盘空间进行释放。

作为一种实施方式,释放模块402具体还用于:

对磁盘空间释放消息进行解封装,得到命令标识及目标磁盘分区;

基于目标磁盘分区执行命令标识对应的命令,以调用预设磁盘空间整理命令对目标虚拟机的目标磁盘分区的磁盘空间进行释放。

在本公开中,释放模块402用于执行步骤s202。

综上所述,本公开提供的一种磁盘空间释放方法及装置,应用于宿主机的方法包括:接收磁盘空间释放命令;解析磁盘空间释放命令,生成命令标识、以及生成待释放磁盘空间的多个目标虚拟机及与每个目标虚拟机对应的目标磁盘分区;按照预设格式将命令标识及每个目标虚拟机对应的目标磁盘分区封装成多个磁盘空间释放消息;将多个磁盘空间释放消息发送至对应的目标虚拟机,以使对应的目标虚拟机基于对应的磁盘空间释放消息调用预设磁盘空间整理命令对对应的目标虚拟机的磁盘空间进行释放。与现有技术相比,本公开通过在宿主机上执行统一的一条磁盘空间释放命令即可将待释放磁盘空间的目标磁盘分区发送至对应的目标虚拟机,以达到同时释放多个目标虚拟机的目标磁盘分区中多余存储空间的目的,极大地提高了释放目标虚拟机的目标磁盘分区中多余磁盘空间的效率。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本公开的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

另外,在本公开各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。

所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上所述仅为本公开的优选实施例而已,并不用于限制本公开,对于本领域的技术人员来说,本公开可以有各种更改和变化。凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

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