一种虚拟机内存快照导入块设备的方法、系统及装置与流程

文档序号:16855148发布日期:2019-02-12 23:11阅读:205来源:国知局
一种虚拟机内存快照导入块设备的方法、系统及装置与流程

本申请涉及虚拟机内存快照领域,特别涉及一种虚拟机内存快照导入块设备的方法、系统、装置及计算机可读存储介质。



背景技术:

虚拟机的快照是服务器虚拟化的基本功能,在服务器虚拟机中可以使用多种后端存储类型,包括:本地文件系统,nas文件系统,cfs2文件系统,裸设备,块设备分布式存储等。对于使用文件系统,不管是网络文件系统(nas,cfs2等)还是本地文件系统创建虚拟机内存快照都有成熟的方案,但是如果在具体的部署环境中只用块设备存储,那么虚拟机就不能像使用文件系统那样简单的创建虚拟机内存快照了,而是只能通过将虚拟机内存快照先写到本地文件系统中然后导入块设备中的方法,这样会浪费大量的系统本身存储空间与宝贵的io资源。

因此,如何在虚拟机创建快照时降低对磁盘空间的占用和io资源的消耗是本领域技术人员目前需要解决的技术问题。



技术实现要素:

本申请的目的是提供一种虚拟机内存快照导入块设备的方法、系统、装置及计算机可读存储介质,用于在虚拟机创建快照时降低对磁盘空间的占用和io资源的消耗。

为解决上述技术问题,本申请提供一种虚拟机内存快照导入块设备的方法,该方法包括:

管道管理服务在接收到虚拟机快照创建请求后,创建虚拟机进程与数据导入服务之间的管道;

所述虚拟机进程将内存数据写入所述管道;

所述数据导入服务根据接收到的数据导入请求确定块设备池及虚拟机配置信息,在所述块设备池内创建块设备卷,并将虚拟机配置信息写入所述块设备卷中;

在所述虚拟机配置信息写入完成后,所述数据导入服务从所述管道中读取所述内存数据,并将所述内存数据写入所述块设备卷中。

可选的,所述管道管理服务在接收到虚拟机快照创建请求后,创建虚拟机进程与数据导入服务之间的管道,包括:

所述管道管理服务在接收到虚拟机快照创建请求后创建初始管道;

在所述初始管道创建完成后,所述管道管理服务将所述初始管道的写端文件描述符发送至虚拟机进程,将所述初始管道的读端文件描述符发送至数据导入服务;

所述虚拟机进程将内存数据写入所述管道,对应包括:

所述虚拟机进程依据所述初始管道的写端文件描述符将所述内存数据写入所述初始管道;

所述数据导入服务从所述管道中读取所述内存数据,对应包括:

所述数据导入服务依据所述初始管道的读端文件描述符从所述初始管道中读取所述内存数据。

可选的,所述数据导入服务根据接收到的数据导入请求确定块设备池及虚拟机配置信息,在所述块设备池内创建块设备卷,并将虚拟机配置信息写入所述块设备卷中,包括:

所述数据导入服务根据接收到的数据导入请求确定块设备池、块设备卷配置信息及虚拟机配置信息,在所述块设备池内创建初始块设备卷;

根据所述块设备卷配置信息对所述初始块设备卷的大小进行调整,得到所述块设备卷;

将虚拟机配置信息写入所述块设备卷中。

可选的,所述数据导入服务从所述管道中读取所述内存数据,并将所述内存数据写入所述块设备卷中,包括:

所述数据导入服务从所述管道中读取所述内存数据,并确定所述内存数据的大小;

根据所述内存数据的大小对所述块设备卷进行扩容处理,得到扩容后的块设备卷;

将所述内存数据写入所述扩容后的块设备卷中。

本申请还提供一种虚拟机内存快照导入块设备的系统,该系统包括:

管道管理服务模块,用于在接收到虚拟机快照创建请求后,创建虚拟机进程与数据导入服务之间的管道;

虚拟机进程模块,用于将内存数据写入所述管道;

数据导入服务模块,用于根据接收到的数据导入请求确定块设备池及虚拟机配置信息,在所述块设备池内创建块设备卷,并将虚拟机配置信息写入所述块设备卷中;在所述虚拟机配置信息写入完成后,从所述管道中读取所述内存数据,并将所述内存数据写入所述块设备卷中。

可选的,所述管道管理服务模块包括:

管道创建子模块,用于在接收到虚拟机快照创建请求后创建初始管道;

发送子模块,用于在所述初始管道创建完成后,将所述初始管道的写端文件描述符发送至虚拟机进程,将所述初始管道的读端文件描述符发送至数据导入服务;

所述虚拟机进程模块对应包括:

虚拟机进程子模块,用于依据所述初始管道的写端文件描述符将所述内存数据写入所述初始管道;

所述数据导入服务模块对应包括:

数据导入服务子模块,用于依据所述初始管道的读端文件描述符从所述管道中读取所述内存数据。

可选的,所述数据导入服务模块包括:

卷创建子模块,用于根据接收到的数据导入请求确定块设备池、块设备卷配置信息及虚拟机配置信息,在所述块设备池内创建初始块设备卷;

调整子模块,用于根据所述块设备卷配置信息对所述初始块设备卷的大小进行调整,得到所述块设备卷;

第一写入子模块,用于将虚拟机配置信息写入所述块设备卷中。

可选的,所述数据导入服务模块包括:

读取子模块,用于从所述管道中读取所述内存数据,并确定所述内存数据的大小;

扩容子模块,用于根据所述内存数据的大小对所述块设备卷进行扩容处理,得到扩容后的块设备卷;

第二写入子模块,用于将所述内存数据写入所述扩容后的块设备卷中。

本申请还提供一种虚拟机内存快照导入块设备的装置,该虚拟机内存快照导入块设备的装置包括:

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

处理器,用于执行所述计算机程序时实现如上述任一项所述虚拟机内存快照导入块设备的方法的步骤。

本申请还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一项所述虚拟机内存快照导入块设备的方法的步骤。

本申请所提供虚拟机内存快照导入块设备的方法,包括:管道管理服务在接收到虚拟机快照创建请求后,创建虚拟机进程与数据导入服务之间的管道;虚拟机进程将内存数据写入该管道;数据导入服务根据接收到的数据导入请求确定块设备池及虚拟机配置信息,在该块设备池内创建块设备卷,并将虚拟机配置信息写入该块设备卷中;在虚拟机配置信息写入完成后,该数据导入服务从该管道中读取该内存数据,并将该内存数据写入该块设备卷中。

本申请所提供的技术方案,通过管道管理服务创建虚拟机进程与数据导入服务之间的管道,并令虚拟机进程将内存数据写入该管道中,再令数据导入服务从该管道中读取该内存数据,并将该内存数据写入该块设备卷中,使得不经本地文件系统中转便可直接将内存数据导入块设备中,从而在虚拟机创建快照时降低了对磁盘空间的占用和io资源的消耗,并缩短了虚拟机创建快照的时间。本申请同时还提供了一种虚拟机内存快照导入块设备的系统、装置及计算机可读存储介质,具有上述有益效果,在此不再赘述。

附图说明

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

图1为本申请实施例所提供的一种虚拟机内存快照导入块设备的方法的流程图;

图2为图1所提供的一种虚拟机内存快照导入块设备的方法中s103的一种实际表现方式的流程图;

图3为本申请实施例所提供的一种虚拟机内存快照导入块设备的系统的结构图;

图4为本申请实施例所提供的另一种虚拟机内存快照导入块设备的系统的结构图;

图5为本申请实施例所提供的一种虚拟机内存快照导入块设备的装置的结构图。

具体实施方式

本申请的核心是提供一种虚拟机内存快照导入块设备的方法、系统、装置及计算机可读存储介质,用于在虚拟机创建快照时降低对磁盘空间的占用和io资源的消耗。

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

请参考图1,图1为本申请实施例所提供的一种虚拟机内存快照导入块设备的方法的流程图。

其具体包括如下步骤:

s101:管道管理服务在接收到虚拟机快照创建请求后,创建虚拟机进程与数据导入服务之间的管道;

针对于具体的部署环境中只用块设备进行数据存储的情况,虚拟机只能通过将虚拟机内存快照先写到本地文件系统中然后导入块设备中的方法,来创建虚拟机内存快照,会导致系统本身存储空间与io资源浪费,本申请提供了一种虚拟机内存快照导入块设备的方法,用于解决上述问题;

管道是linux支持的最初unixipc形式之一,具有以下特点:管道是半双工的,数据只能向一个方向流动;单独构成一种独立的文件系统:管道对于管道两端的进程而言,就是一个文件,但它不是普通的文件,它不属于某种文件系统,而是自立门户,单独构成一种文件系统,并且只存在与内存中。其数据的读出和写入:一个进程向管道中写的内容被管道另一端的进程读出,写入的内容每次都添加在管道缓冲区的末尾,并且每次都是从缓冲区的头部读出数据;

本申请在管道管理服务接收到虚拟机快照创建请求后,利用管道管理服务创建虚拟机进程与数据导入服务之间的管道,使得虚拟机进程与数据导入服务之间能够通过管道传输内存数据,使得不经本地文件系统中转便可直接将内存数据导入块设备中;

优选的,这里提到的管道管理服务在接收到虚拟机快照创建请求后,创建虚拟机进程与数据导入服务之间的管道,其具体可以为:

管道管理服务在接收到虚拟机快照创建请求后创建初始管道;

在初始管道创建完成后,管道管理服务将初始管道的写端文件描述符发送至虚拟机进程,将初始管道的读端文件描述符发送至数据导入服务;

这里提到的将初始管道的写端文件描述符发送至虚拟机进程,其目的在于令虚拟机进程能够依据该初始管道的写端文件描述符将内存数据写入该初始管道;

这里提到的将初始管道的读端文件描述符发送至数据导入服务,其目的在于令数据导入服务能够依据该初始管道的读端文件描述符从该初始管道中读取该内存数据。

s102:虚拟机进程将内存数据写入管道;

s103:数据导入服务根据接收到的数据导入请求确定块设备池及虚拟机配置信息,在块设备池内创建块设备卷,并将虚拟机配置信息写入块设备卷中;

在虚拟机进程将内存数据写入管道后,数据导入服务接收到数据导入请求,此时根据该数据导入请求确定块设备池及虚拟机配置信息,在块设备池内创建块设备卷,并将虚拟机配置信息写入块设备卷中;

这里提到的在块设备池内创建块设备卷,其具体可以为:

调用块设备连接服务获取块设备连接,连接至指定的块设备池中进行块设备卷的创建。

s104:在虚拟机配置信息写入完成后,数据导入服务从管道中读取内存数据,并将内存数据写入块设备卷中。

优选的,针对于可能存在块设备卷的存储空间无法装下内存数据的情况,这里提到的数据导入服务从管道中读取内存数据,并将内存数据写入块设备卷中,其具体可以为:

数据导入服务从管道中读取内存数据,并确定内存数据的大小;

根据内存数据的大小对块设备卷进行扩容处理,得到扩容后的块设备卷;

将内存数据写入扩容后的块设备卷中。

从管道中读取内存数据后,先确定该内存数据的大小,再根据该内存数据的大小对块设备卷进行扩容处理,得到扩容后的块设备卷,并将内存数据写入扩容后的块设备卷中,避免出现块设备卷的存储空间无法装下内存数据的情况。

基于上述技术方案,本申请所提供的一种虚拟机内存快照导入块设备的方法,通过管道管理服务创建虚拟机进程与数据导入服务之间的管道,并令虚拟机进程将内存数据写入该管道中,再令数据导入服务从该管道中读取该内存数据,并将该内存数据写入该块设备卷中,使得不经本地文件系统中转便可直接将内存数据导入块设备中,从而在虚拟机创建快照时降低了对磁盘空间的占用和io资源的消耗,并缩短了虚拟机创建快照的时间。

针对于上一实施例的步骤s103,其中所描述的数据导入服务根据接收到的数据导入请求确定块设备池及虚拟机配置信息,在块设备池内创建块设备卷,并将虚拟机配置信息写入块设备卷中,其具体可以包括如图2所示的步骤,下面结合图2进行说明。

请参考图2,图2为图1所提供的一种虚拟机内存快照导入块设备的方法中s103的一种实际表现方式的流程图。

其具体包括以下步骤:

s201:数据导入服务根据接收到的数据导入请求确定块设备池、块设备卷配置信息及虚拟机配置信息,在块设备池内创建初始块设备卷;

s202:根据块设备卷配置信息对初始块设备卷的大小进行调整,得到块设备卷;

s203:将虚拟机配置信息写入块设备卷中。

数据导入服务根据接收到的数据导入请求确定块设备池、块设备卷配置信息及虚拟机配置信息,在块设备池内创建初始块设备卷;根据块设备卷配置信息对初始块设备卷的大小进行调整,得到块设备卷;将虚拟机配置信息写入块设备卷中。

请参考图3,图3为本申请实施例所提供的一种虚拟机内存快照导入块设备的系统的结构图。

该系统可以包括:

管道管理服务模块100,用于在接收到虚拟机快照创建请求后,创建虚拟机进程与数据导入服务之间的管道;

虚拟机进程模块200,用于将内存数据写入管道;

数据导入服务模块300,用于根据接收到的数据导入请求确定块设备池及虚拟机配置信息,在块设备池内创建块设备卷,并将虚拟机配置信息写入块设备卷中;在虚拟机配置信息写入完成后,从管道中读取内存数据,并将内存数据写入块设备卷中。

请参考图4,图4为本申请实施例所提供的另一种虚拟机内存快照导入块设备的系统的结构图。

该管道管理服务模块100可以包括:

管道创建子模块,用于在接收到虚拟机快照创建请求后创建初始管道;

发送子模块,用于在初始管道创建完成后,将管道写端的文件描述符发送至虚拟机进程,将管道读端的文件描述符发送至数据导入服务;

该虚拟机进程模块200对应可以包括:

虚拟机进程子模块,用于通过管道写端的文件描述符将内存数据写入管道;

该数据导入服务模块300对应可以包括:

数据导入服务子模块,用于通过管道读端的文件描述符从管道中读取内存数据。

可选的,该数据导入服务模块300包括:

卷创建子模块,用于根据接收到的数据导入请求确定块设备池、块设备卷配置信息及虚拟机配置信息,在块设备池内创建初始块设备卷;

调整子模块,用于根据块设备卷配置信息对初始块设备卷的大小进行调整,得到块设备卷;

第一写入子模块,用于将虚拟机配置信息写入块设备卷中。

可选的,该数据导入服务模块300可以包括:

读取子模块,用于从管道中读取内存数据,并确定内存数据的大小;

扩容子模块,用于根据内存数据的大小对块设备卷进行扩容处理,得到扩容后的块设备卷;

第二写入子模块,用于将内存数据写入扩容后的块设备卷中。

以上系统中的各个组成部分可实际应用于以下的实施例中:

管道创建子模块在接收到虚拟机快照创建请求后创建初始管道;发送子模块在初始管道创建完成后,将管道写端的文件描述符发送至虚拟机进程,将管道读端的文件描述符发送至数据导入服务;虚拟机进程子模块通过管道写端的文件描述符将内存数据写入管道;

卷创建子模块根据接收到的数据导入请求确定块设备池、块设备卷配置信息及虚拟机配置信息,在块设备池内创建初始块设备卷;调整子模块根据块设备卷配置信息对初始块设备卷的大小进行调整,得到块设备卷;第一写入子模块将虚拟机配置信息写入块设备卷中;读取子模块从管道中读取内存数据,并确定内存数据的大小;扩容子模块根据内存数据的大小对块设备卷进行扩容处理,得到扩容后的块设备卷;第二写入子模块将内存数据写入扩容后的块设备卷中。

请参考图5,图5为本申请实施例所提供的一种虚拟机内存快照导入块设备的装置的结构图。

该虚拟机内存快照导入块设备的装置400可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(centralprocessingunits,cpu)422(例如,一个或一个以上处理器)和存储器432,一个或一个以上存储应用程序442或数据444的存储介质430(例如一个或一个以上海量存储设备)。其中,存储器432和存储介质430可以是短暂存储或持久存储。存储在存储介质430的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对装置中的一系列指令操作。更进一步地,中央处理器422可以设置为与存储介质430通信,在虚拟机内存快照导入块设备的装置400上执行存储介质430中的一系列指令操作。

虚拟机内存快照导入块设备的装置400还可以包括一个或一个以上电源424,一个或一个以上有线或无线网络接口450,一个或一个以上输入输出接口458,和/或,一个或一个以上操作系统441,例如windowsservertm,macosxtm,unixtm,linuxtm,freebsdtm等等。

上述图1至图2所描述的虚拟机内存快照导入块设备的方法中的步骤由虚拟机内存快照导入块设备的装置基于该图5所示的结构实现。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置、设备和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。

作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。

集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,功能调用装置,或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

以上对本申请所提供的一种虚拟机内存快照导入块设备的方法、系统、装置及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。

还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。

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