具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
请参阅图1,图1所示为本申请实施例提供的一种虚拟机快照管理系统的架构图,所述虚拟机快照管理系统可以作为虚拟机快照管理方法的实施环境。如图1所示,该虚拟机管理系统的架构图可以至少包括存储系统、宿主机和控制节点。
具体的,本说明书实施例中,所述存储系统可以存储在服务器中,所述存储系统可以为分布式存储系统,具体地,其可以为Ceph,Ceph是一种为提供优秀的性能、可靠性和可扩展性而设计的统一的、分布式文件系统。可以在分布式存储系统中设置多个存储池来存储虚拟机的数据,比如使用第一存储池来存储虚拟机的系统盘,使用第二存储池来存储虚拟机的数据盘,使用第三存储池来存储虚拟机的快照。
具体的,本说明书实施例中,所述宿主机为虚拟机所属的物理机,所述宿主机上可以安装至少一台虚拟机。
具体的,所述控制节点可以为服务器中的节点。其中,所述服务器可以包括一个独立运行的服务器,或者分布式服务器,或者由多个服务器组成的服务器集群。
下面介绍采用本申请实施例提供的一种虚拟机快照管理系统来对虚拟机快照进行管理需要用到的功能模块或工具。本说明书实施例中,可以通过请求控制层、虚拟机逻辑层、虚拟化和存储层来实现对虚拟机快照的管理。
具体地,请求控制层包括虚拟机操作的请求处理模块和虚拟机的调度模块。请求处理模块,具体可以为Nova-api,Nova-api向用户提供接口,接收用户发起的请求,待Nova处理完请求后再将处理结果返回给客户端。其中,Nova是OpenStack中的一个核心组件,其用于管理用户的虚拟机实例,根据用户需求来实现对虚拟机的开关机、冷热迁移等操作,而OpenStack则是一个旨在为公共及私有云的建设与管理提供软件的开源项目。调度模块,具体可以为Nova-schduler,Nova-schduler是一种在虚拟机化池中找出符合要求的物理机来创建虚拟机的调度工具。
具体地,在虚拟机逻辑层,比如可以通过Nova-compute在调度到的物理机上对虚拟机进行管理,Nova-compute可以运行在调度到的宿主机上。其中,Nova-compute是Nova中用于处理管理实例生命周期的组件,其通过消息队列接收请求,并承担操作工作。
具体地,在虚拟化和存储层,比如可以通过Libvirt和qume来创建和操作虚拟机的虚拟化,并可以通过Librbd和Ceph来提供存储服务。其中,Libvirt是用于管理虚拟化平台的开源的调用接口,统一管理各个虚拟化软件,Librbd是Ceph提供块存储的库,Librbd通过库的形式提供块设备操作的接口。
以下介绍本申请实施例的一种虚拟机快照管理方法,所述虚拟机快照管理方法可以运行于上述虚拟机快照管理系统之中。图2是本申请实施例提供的一种虚拟机快照管理方法的流程示意图,本说明书提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的系统或服务器产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。具体的如图2所示,所述方法可以包括以下步骤:
S201:接收创建虚拟机快照的第一请求信息,所述第一请求信息中包括第一虚拟机的属性信息;所述第一虚拟机包括至少一个块设备。
本说明书实施例中,所述第一虚拟机的属性信息包括但不限于第一虚拟机的名称、第一虚拟机的网络协议地址(Internet Protocol Address,IP)、第一虚拟机的标识信息等。其中,第一虚拟机的标识信息,比如,可以是第一虚拟机身份标识号码(Identity,ID),第一虚拟机ID用于唯一标识第一虚拟机,通过第一虚拟机ID可以将第一虚拟机与其他虚拟机区分开。
本说明书实施例中,所述块设备包括但不限于磁盘等,而磁盘按照功能又可以进一步包括系统盘和数据盘。
S203:根据所述第一虚拟机的属性信息获取所述第一虚拟机中各个块设备的块设备信息。
在一些实施例中,可以根据所述第一虚拟机的属性信息获取所述第一虚拟机的第一设备配置信息,所述第一设备配置信息包括所述第一虚拟机中各个块设备的块设备信息。
在一些实施例中,所述第一虚拟机的第一配置信息包括但不限于第一虚拟机的配置文件信息等,所述第一虚拟机的配置文件信息,比如可以为第一虚拟机的可扩展标记语言(Extensive Markup Language,XML)文件信息。
在一些实施例中,所述块设备信息包括但不限于块设备的名称、标识信息、存储信息、存储空间等。
在一个具体的实施例中,S203进一步可以包括:根据第一虚拟机ID获取所述第一虚拟机的XML文件信息,通过解析所述第一虚拟机的XML文件信息获取所述第一虚拟机中各个块设备的块设备信息。
事实上,本申请实施例可以支持多场景的快照管理,为了便于实现基于场景的多种快照管理,本申请实施例首先设计了虚拟机快照管理操作界面,如图3所示,所述第一请求信息可以由用户在该虚拟机快照管理操作界面上进行选择操作而发起。
在一个可行的实施例中,由用户发起的创建虚拟机快照的请求将触发下述步骤的执行:
(1)用户在该虚拟机快照管理操作界面上,选择待创建的快照场景(即待创建快照的类型)、待创建快照的虚拟机,并在该虚拟机快照管理操作界面上输入待创建快照的名称、待创建快照的描述信息等,然后点击操作界面上的“确认”按钮,发起创建虚拟机快照的第一请求信息;其中,所述待创建快照的描述信息,比如可以为该待创建快照的用途等备注信息。
(2)nova-api接收到请求后,解析请求参数,根据第一虚拟机ID到数据库系统中查找第一虚拟机所在的宿主机。其中,数据库系统可以是关系型数据库,比如mysql。
(3)在找到第一虚拟机所在的宿主机后,nova-api把包含第一虚拟机的属性信息、待创建快照的类型、待创建快照的名称、待创建快照的描述信息等的第一请求信息,通过远程过程调用(remote procedure call,rpc)发送到第一虚拟机所在的宿主机,rpc调用使用异步调用,rpc调用通过nova-api给用户返回响应。
(4)运行在宿主机上的nova-compute通过接听rabbitmq的消息队列,接收到nova-api发送过来的第一请求信息,解析请求参数,然后根据待创建快照的类型选择不同的快照创建流程。其中,rabbitmq是一套开源的消息队列服务软件。
S205:分别根据各个块设备的块设备信息创建所述块设备对应的块设备快照,并基于创建出的各个块设备快照得到所述第一虚拟机对应的虚拟机快照。
在一些实施例中,若虚拟机系统中已经存在一套环境,比如已经有一些虚拟机上线,则说明该第一虚拟的当前系统处于一个存量的环境场景中,可以直接对虚拟机创建基本快照。此时用户可以直接在虚拟机快照管理操作界面上选择快照场景为“基本快照”,即表示第一请求信息用于请求创建基本快照,那么系统就会按照S205中与基本快照对应的流程来创建快照。
在一些实施例中,在需要对虚拟机配置一个新系统环境时,此时需要在第一虚拟机中的镜像中安装qga,其中,qga是qemu-guest-agent的缩写,其是一个运行在虚拟机内部的守护程序时。当安装了qga之后,用户可以直接在虚拟机快照管理操作界面上选择快照场景为“冻结文件系统快照”,即表示第一请求信息用于请求创建冻结文件系统快照,那么系统就会按照与创建冻结文件系统快照对应的流程来创建快照,如图4所示,所述创建冻结文件系统快照的步骤可以包括:
S401:根据所述第一虚拟机的属性信息生成冻结文件系统指令,并将所述冻结文件系统指令发送至所述第一虚拟机,以使所述第一虚拟机冻结自身的文件系统。
在一个可行的实施例中,可以根据第一虚拟机的属性信息查找到该第一虚拟机所在的宿主机,宿主机根据第一虚拟机的属性信息生成所述第一虚拟机的冻结文件系统指令,并将该冻结文件系统指令发送给第一虚拟机,当第一虚拟机接收到该冻结文件系统指令时,会冻结自身的文件系统,有利于保证数据一致性,降低数据风险。
在实际应用中,可以通过qga向虚拟机文件系统发送冻结指令,通过qga实现宿主机和虚拟机进行交互的方式,这种方式在不依赖于网络创建虚拟机的时候,同时会创建一个Unix socket,并由qemu将其模拟成一个串口设备给虚拟机。冻住文件系统的时候,nova调用libvirt,libvirt借助于unix socket通知qga执行相应的命令。其中,Unix socket是一种用于同一台主机的进程间通讯,通过Unix socket可以将应用层数据从一个进程拷贝到另一个进程,在此过程中,可以不需要经过网络协议栈,不需要打包拆包等操作,qemu是一种纯软件实现的虚拟机模拟器,其软件虚拟化实现采用的是二进制指令翻译技术。通过qga向虚拟机文件系统发送冻结指令的具体流程请参阅图5,其中,图5中的标号“1”表示nova,标号“2”表示libvirt,标号“3”表示qemu,标号“4”表示Unix socket,标号“5”表示串口,标号“6”表示qga,标号“7”表示虚拟机。
S403:分别根据各个块设备的块设备信息创建所述块设备对应的块设备快照,并基于创建出的各个块设备快照得到所述第一虚拟机对应的虚拟机快照。
本说明书实施例中,当S403完成之后,宿主机会向第一虚拟机发送解除冻结文件系统指令,当第一虚拟机接收到该解除冻结文件系统指令之后,会自动解除对自身文件系统的冻结。
本说明书实施例中,在需要对虚拟机配置一个新系统环境时,用户可以在虚拟机快照管理操作界面上选择创建冻结文件系统快照,即可以先使第一虚拟机冻结自身文件系统,然后再对块设备创建快照,这样不仅可以实现以虚拟机为整体创建快照,还可以保证虚拟机数据的安全性和一致性
在一些实施例中,在需要对虚拟机内存和块设备同时做快照时,用户可以直接在虚拟机快照管理操作界面上选择快照场景为“带内存快照”,即第一请求信息用于请求创建带内存快照,那么系统就会按照与创建带内存快照对应的流程来创建快照,如图6所示,所述创建带内存快照的步骤可以包括:
S601:根据所述第一虚拟机的内存数据创建外部内存镜像。
本说明书实施例中,若用户在虚拟机快照管理操作界面上选择了“带内存快照”,即所述第一请求信息中的待创建快照的类型为请求创建带内存快照,则nova-computer可以首先通过libvirt创建第一虚拟机的外部内存镜像。其中,创建第一虚拟机的外部内存镜像具体可以为:将第一虚拟机的内存数据保存到本地(第一虚拟机所在的宿主机)的一个文件中,保存在第一虚拟机所在的宿主机上的内存数据即为第一虚拟机的外部内存镜像。在该外部内存镜像创建好后,再继续S603中的对各个块设备创建快照的步骤。
S603:分别根据各个块设备的块设备信息创建所述块设备对应的块设备快照,并基于创建出的各个块设备快照得到所述第一虚拟机对应的虚拟机快照。
S605:存储所述虚拟机快照与所述外部内存镜像。
本说明书实施例中,当根据各个块设备的块设备快照形成第一虚拟机对应的快照之后,再将所述虚拟机快照与所述外部内存镜像存储至存储系统中。
本说明书实施例,可以同时对虚拟机的块设备和内存制作快照,不仅可以实现以虚拟机为整体创建快照,还由于保存了虚拟机的内存,降低了数据不一致的风险,使得第一虚拟机数据的安全性和一致性能够得到保证。
在一些实施例中,如图7所示,所述分别根据各个块设备的块设备信息创建所述块设备对应的块设备快照,可以包括以下步骤:
S701:分别根据各个块设备的块设备信息在存储系统中获取所述块设备的原始数据。
S703:根据所述块设备的原始数据生成所述块设备快照。
本说明书实施例中,可以根据各个块设备的块设备信息,比如属性信息等,在Ceph中的不同存储池中获取与各个块设备对应的块设备(rados block device,rbd)卷,即块设备的原始数据,通过与各个块设备对应的rbd卷,分别对各个块设备创建块设备快照。
通过S701-S703创建出来的快照是只读快照,在一个可行的实施例中,如果需要创建的快照是可读写快照,可以基于该快照创建Ceph的克隆卷(clone卷),即复制数据,此时,虚拟机快照是可读写快照,因此,在所述基于创建出的各个块设备快照得到所述第一虚拟机对应的虚拟机快照之后,还可以包括以下步骤:若所述虚拟机快照为只读快照,则对所述虚拟机快照创建具有写权限的复制数据。
在一个具体的实施例中,如图8所示,使用Ceph中的rbd创建快照原理如下:使用rbd创建快照的时候,只是更新了卷的元数据,添加了一些快照信息。在做完快照之后,如果对原始数据进行写入的时候,会把原来的数据读出并写入到快照中,然后在进行原始数据修改,也就是写时复制(copy on write,cow)。
在一个具体的实施例中,以块设备包括系统盘和数据盘为例,使用Ceph中的rbd创建带内存快照时,Ceph中数据操作的流程示意图可以如图9所示。从图9中可以看出,在创建带内存快照的时候,不仅可以对虚拟机内存创建快照,还可以对所有块设备(即系统盘和数据盘)创建快照,实现了以虚拟机为整体创建快照,同时由于保存了内存数据,降低了数据不一致的风险。
本说明书实施例中,使用Ceph中的rbd创建快照,快照的创建速度比较快,可以达到秒级。
在一个可行的实施例中,以块设备包括系统盘和数据盘为例,在S205、S403、S603中,所述基于创建出的各个块设备快照得到所述第一虚拟机对应的虚拟机快照进一步可以包括:分别根据各个块设备的块设备信息,比如系统盘、数据盘的属性信息以及存储信息,创建系统盘对应的系统盘快照以及数据盘对应的数据盘快照,将所述系统盘快照和数据盘快照形成一个整体快照,并将该整体快照作为所述第一虚拟机对应的虚拟机快照。
在实际应用中,在根据各个块设备的块设备信息创建所述块设备对应的块设备快照之后,可以将各个块设备的对应的块设备快照按照预设规则自动生成一个整体快照链,并将该整体快照链作为所述第一虚拟机对应的虚拟机快照。
在一个具体的实施例中,预设规则可以是块设备之间的从属关系规则、各个块设备的属性信息、存储位置和/或存储容量等信息。
在实际应用中,创建好的快照可以通过快照链或快照树的形式在虚拟机快照管理操作界面上呈现出来以供用户查看,如图10所示。当然,除了快照链形式或快照树形式以外,创建好的快照还可以通过快照表的形式在虚拟机快照管理操作界面上呈现给用户,如图11所示。用户可以按照自己的需求在虚拟机快照管理操作界面选择快照的呈现形式,从而有效提高了用户体验。
本说明书实施例中,一方面,通过虚拟机快照管理操作界面与用户进行交互,可以根据用户在界面上选择的快照场景创建,按照不同的创建快照方式创建与不同应用场景对应的快照,实现了支持多场景模式的快照的创建;另一方面,可以基于虚拟机的属性信息获取各个块设备的块设备信息,基于各个块设备创建出的各个块设备快照得到虚拟机对应的虚拟机快照,实现以虚拟机为整体进行快照的操作;第三方面,创建出的快照以快照链或快照表的方式呈现给用户,方便用户查看,提高用户体验;第四方面,在创建冻结文件系统快照的时候先冻结虚拟机自身的文件系统,在创建带内存快照的时候,可以先创建内存数据的外部内存镜像,以此保证了虚拟机数据的安全性和一致性。
在一些实施例中,所述方法还可以包括恢复虚拟机快照的步骤,即回滚虚拟机快照的步骤,如图12所示,所述恢复虚拟机快照可以包括以下步骤:
S1201:接收恢复虚拟机快照的第二请求信息,所述第二请求信息中包括待恢复快照的属性信息;所述待恢复快照对应的第二虚拟机包括至少一个块设备。
本说明书实施例中,待恢复快照的属性信息包括但不限于待恢复快照的名称、待恢复快照的快照类型、待恢复快照的描述信息、待恢复快照的ID。
S1203:根据所述待恢复快照的属性信息获取所述第二虚拟机中各个块设备的块设备信息。
本说明书实施例中,根据待恢复快照的属性信息,比如待恢复快照的ID,可以找到第二虚拟机所在的虚拟机,从而可以获取与第二虚拟机相关的信息,比如,第二虚拟机的第二配置信息。在找到第二虚拟机的第二配置信息之后,可以根据第二虚拟机的第二配置信息,比如第二虚拟机中的XML文件信息,通过解析所述第二虚拟机的XML文件信息获取所述第二虚拟机中各个块设备的块设备信息。其中,所述块设备信息包括但不限于块设备(比如,系统盘、数据盘等)的名称、标识信息、存储信息、存储空间等。
在一个具体的实施例中,第二请求中还可以携带第二虚拟机的属性信息,比如第二虚拟机的名称、ID等,可以通过第二虚拟机的属性信息获取与第二虚拟机的相关信息。
在实际应用中,如图10所示,可以通过虚拟机快照管理操作界面实现恢复快照的多场景管理,所述第二请求信息可以由用户在该虚拟机快照管理操作界面上进行选择操作而发起。
在一个可行的实施例中,由用户发起的恢复虚拟机快照的请求将触发下述步骤的执行:
(1)用户在该虚拟机快照管理操作界面上,选择需要恢复的待恢复快照,单后点击操作界面上的“回滚”按钮,发起恢复虚拟机快照的第二请求信息,该第二请求信息中包括虚拟机ID、待恢复快照的ID;
(2)nova-api接收到用户请求,解析参数,根据待恢复快照的ID从数据库获取待恢复快照信息,根据获取的待恢复快照的快照信息,查看待恢复快照的状态,待恢复快照只有在处于创建成功状态的时候才能回滚;其中,待恢复快照的记录信息,比如可以是该待恢复快照存储在Ceph中的整条记录信息,比如可以包括待恢复快照的ID、名字、状态、在快照链中的父子关系,所属的虚拟机的ID等。
(3)nova-api同时通过虚拟机ID从数据库获取虚拟机信息,找到虚拟机所在的宿主机;
(4)nova-api把包括虚拟机ID、待恢复快照的快照信息等的第二请求信息通过rpc传给nova-compute;
(5)nova-compute通过监听rabbitmq消息队列,获取请求并解析出虚拟机ID和待恢复快照的快照信息,根据待恢复快照的类型,选择不同的快照恢复流程。
S1205:基于所述待恢复快照的属性信息和所述第二虚拟机中各个块设备的块设备信息,对所述待恢复快照进行恢复。
本说明书实施例中,如果用户在虚拟机快照管理操作界面上选择的待恢复快照的类型为基本快照或冻结文件系统快照,即第二请求信息用于请求恢复基本快照或冻结文件系统快照,则可以通过与基本快照或冻结文件系统快照相对应的快照恢复方式对该待恢复快照进行恢复,在该情况下,如图13所示,对所述基本快照或冻结文件系统快照进行恢复可以包括:
S1301:基于所述待恢复快照的属性信息和所述第二虚拟机中各个块设备的块设备信息,在存储系统中查找与所述第二虚拟机中的块设备对应的块设备快照。
在一些实施例中,在通过libvirt获取第二待虚拟机所有的块设备后,可以将待恢复快照的属性信息和所述第二虚拟机中块设备的块设备信息形成一个检索式,通过这个检索式在Ceph中查找是否存在与该块设备对应的快照。
在一个可行的实施例中,比如块设备为数据盘,数据盘存储在Ceph中的第二存储池中,若第二存储池的名称为volumes,则检索式可以为:volume--volumeID@待恢复快照的ID,其中,volumes指的是用于存储数据盘的存储池。
S1303:基于查找到的各个块设备快照得到所述第二虚拟机对应的虚拟机恢复快照。
本说明书实施例中,在通过检索式查找到块设备对应的块设备之后,将查找到的块设备快照作为所述第二虚拟机对应的虚拟机恢复快照。
S1305:对所述虚拟机恢复快照创建具有写权限的恢复快照复制数据。
本说明书实施例中,在确定查找到的与所述第二虚拟机对应的待恢复快照处于创建成功状态时,可以对该虚拟机恢复快照的复制数据做cow快照,然后以该cow快照创建第二恢复复制数据,将该第二恢复复制数据作为恢复快照复制数据。
S1307:使用所述恢复快照复制数据替换所述第二虚拟机中的相关块设备。
本说明书实施例中,在得到恢复快照复制数据之后,使用该恢复快照复制数据替换所述第二虚拟机中的相关块设备,以达到相关块设备的恢复或回滚,然后使用相关快设备的名字对该恢复快照复制数据重新命名,最后重启虚拟机。
在一些实施例中,若用户在虚拟机快照管理操作界面上选择的待恢复快照的类型为带内存快照,即所述第二请求信息用于请求恢复带内存快照,则可以选择与带内存快照相对应的快照恢复方式对待恢复快照进行恢复,如图14所示,恢复带内存快照可以包括:
S1401:基于所述待恢复快照的属性信息和所述第二虚拟机中各个块设备的块设备信息,在存储系统中查找与所述第二虚拟机中的块设备对应的块设备快照。
S1403:基于查找到的各个块设备快照得到所述第二虚拟机对应的虚拟机恢复快照。
S1405:对所述虚拟机恢复快照创建具有写权限的恢复快照复制数据。
S1407:使用所述恢复快照复制数据替换所述第二虚拟机中的相关块设备。
本说明书实施例中的S1401-S1407与S1301-S1307相似,在此不再赘述。
S1409:下载所述存储系统中存储的所述第二虚拟机的外部内存镜像。
S14011:将所述第二虚拟机的外部内存镜像重新存储至所述第二虚拟机。
本说明书实施例中,当待恢复快照的快照类型为带内存快照时,在对第二虚拟机的块设备快照进行恢复之后,还需要从Ceph中下载第二虚拟机的外部内存镜像,然后再使用Libvirt将下载到的虚拟机的外部内存镜像重新存储至第二虚拟机。
在一个具体的实施例中,以块设备包括系统盘和数据盘为例,当待恢复的快照类型为带内存快照时,Ceph中数据操作的流程示意图可以如图15所示,从图15中可以看出,在恢复带内存快照的时候,不仅可以恢复所有块设备(即系统盘和数据盘)的快照,还可以恢复内存数据,实现了以虚拟机为整体恢复数据,同时由于恢复了虚拟机内存数据,降低了数据不一致的风险。
在一个可行的实施例中,在快照恢复之后,可以使用本地文件,记录恢复后虚拟机现在的块设备是从哪个快照恢复过来的对应关系,每次恢复都会生成一个恢复文件,并把这个恢复文件上传至Ceph中以支持虚拟机迁移后的恢复。
本说明书实施例中,可以根据用户选择的待恢复快照的类型,即第二请求信息中携带的待恢复快照的类型确定恢复待恢复快照的流程,实现了支持多场景模式的快照的恢复。
在一些实施例中,所述方法还可以包括删除虚拟机快照的步骤,如图16所示,所述删除虚拟机快照可以包括以下步骤:
S1601:接收删除虚拟机快照的第三请求信息,所述第三请求信息中包括待删除快照的属性信息;所述待删除快照对应的第三虚拟机包括至少一个块设备。
本说明书实施例中,待删除快照的属性信息包括但不限于待删除快照的名称、待删除快照的快照类型、待删除快照的描述信息、待删除快照的ID等。
在实际应用中,如图10所示,可以通过虚拟机快照管理操作界面实现删除快照的多场景管理,所述第三请求信息可以由用户在该虚拟机快照管理操作界面上进行选择操作而发起。
在一个可行的实施例中,由用户发起的删除虚拟机快照的请求将触发下述步骤的执行:
(1)用户在该虚拟机快照管理操作界面上,选择需要删除的待删除快照,单后点击操作界面上的“删除”按钮,发起删除虚拟机快照的第三请求信息,所述第三请求信息中包括虚拟机ID、待删除快照的ID。
(2)nova-api接收到用户请求,解析参数,根据待删除快照的ID从数据库获取快照信息,根据获取的待删除快照的快照信息,查看待删除快照的状态是否允许删除。
(3)nova-api同时通过虚拟机ID从数据库获取虚拟机信息,找到虚拟机所在的宿主机。
(4)nova-api把第三请求通过rpc传给nova-compute,包括虚拟机ID、从数据库取出的待删除快照的快照信息。
(5)nova-compute通过监听rabbitmq消息队列,获取请求并解析出虚拟机ID和待删除快照的快照信息,根据待删除快照的类型,选择不同的快照删除流程。
S1603:基于所述待删除快照的属性信息对所述待删除快照进行删除。
在一些实施例中,若第三请求信息用于请求删除基本快照或冻结文件系统快照,则按照与基本快照或冻结文件系统快照对应的删除方式删除该待删除快照,即删除将所述待删除快照的属性信息作为前缀的快照和复制数据。
在一个具体的实施例中,与基本快照或冻结文件系统快照对应的删除方式具体可以为删除将该待删除快照ID作为前缀的快照、复制数据和/或rbd卷,最后清空Ceph中的存储的相关数据。
在一些实施例中,若所述第三请求信息用于请求删除带内存快照,则删除将所述待删除快照的属性信息作为前缀的快照和复制数据,并删除存储在存储系统中的所述第三虚拟机的外部内存镜像。
本说明书实施例中,可以根据用户在虚拟机快照管理操作界面上选择的待删除快照的类型,确定删除该待删除快照的流程,从而实现了支持多场景模式的快照的删除,提升用户体验。
在实际应用中,Ceph为了秒级创建快照,使用的cow技术,这是以性能换时间。在虚拟机创建快照之后,如果快照复制数据未通过全量拷贝数据进行分离,在写原始数据的时候会出现写前复制,为了提高虚拟机操作的性能,在一个可行的实施例中,可以定期进行原始数据和复制数据进行数据分离,也就是flatten操作。其中,flatten是指rbd快照链扁平化,即进行数据的全量拷贝。
但由于flatten操作会触发大量的读写指令,导致Ceph整个集群负载上升,同时也会影响用户业务。如果一直进行数据的全量拷贝,会使Ceph存储集群容量急剧上升,若Ceph存储集群容量达到告警水位,会导致Ceph整个集群只能读不能写。所以为了保证用户业务的稳定,在一些实施例中,所述方法还可以包括对存储系统的容量进行预估的步骤,如图17所示,所述对存储系统的容量进行预估可以包括以下步骤:
S1701:计算未执行原始数据和复制数据分离操作的快照的存储容量。
本说明书实施例中,可以首先从图11所示的快照表中获取所有未分离的快照,将获取到的所有未分离的快照分为创建未分离快照和恢复未分离快照。
在一个可行的实施例中,还可以根据虚拟机的配置文件信息,比如XML文件信息获取与未分离的快照对应的虚拟机的块设备(比如磁盘等)的总容量。
S1703:计算存储系统的当前使用率。
本说明书实施例中,可以根据Ceph当前使用总容量以及Ceph实际总容量,确定Ceph的当前使用率。
S1705:基于所述存储容量和所述当前使用率,预估所述未执行原始数据和复制数据分离操作的快照在执行分离操作之后,所述存储系统的实际使用率。
本说明书实施例中,可以根据未执行原始数据和复制数据分离操作的快照的存储容量计算预估flatten量,预估flatten量的计算可以采用以下方式:
将创建未分离快照乘以副本数,然后用该乘积再乘以2,得到创建未分离快照的第一预估flatten量;其中,副本数是创建快照的时候系统自动备份的副本数,再乘以2是因为需要对创建的快照做一个全量拷贝。
将恢复未分离快照乘以副本数,得到恢复未分离快照的第二预估flatten量;其中,副本数是恢复快照的时候自动备份的副本数。
计算第一预估flatten量、第二预估flatten量和Ceph的当前使用容量之和,以该计算之和除以Ceph的实际存储容量,得到所述未执行原始数据和复制数据分离操作的快照在执行分离操作之后,Ceph的实际使用率。
S1707:当所述实际使用率大于预设阈值时,停止创建虚拟机快照或恢复虚拟机快照的操作。
本说明书实施例中,如果Ceph的实际使用率大于预设的阈值,表明Ceph的存储容量达到了警告水位,此时,不允许创建或者恢复快照。
在一个可行的实施例中,原始数据和复制数据的数据分离操作可以在预设时间段内完成,该预设时间段可以为业务闲时的时间段内运行,比如可以通过窗口控制,控制在22点到6点的时间窗口内触发数据分离操作。
在一个可行的实施例中,还可以控制整个Ceph集群只允许一个rbd在做数据分离操作。
在一个具体的实施例中,可以利用Ceph中的rbd的排它锁实现一个分布式锁,每个nova-compute通过rbd实现的分布式锁来控制整个Ceph集群只有一个rbd在做数据分离操作。
本说明书实施例中,通过设置的存储集群容量预估算法,当Ceph的存储容量达到了警告水位,则不允许创建或者恢复快照,从而有效地保证了后端存储集群的稳定性,且不会影响用户业务。
本申请实施例还提供了一种虚拟机快照管理装置,如图18所示,所述装置可以包括:
接收模块1801,用于接收创建虚拟机快照的第一请求信息,所述第一请求信息中包括第一虚拟机的属性信息;所述第一虚拟机包括至少一个块设备;
获取模块1803,用于根据所述第一虚拟机的属性信息获取所述第一虚拟机中各个块设备的块设备信息;
创建模块1805,用于分别根据各个块设备的块设备信息创建所述块设备对应的块设备快照;基于创建出的各个块设备快照得到所述第一虚拟机对应的虚拟机快照。
在一些实施例中,所述创建模块1805可以包括:
原始数据获取单元,用于分别根据各个块设备的块设备信息在存储系统中获取所述块设备的原始数据;
生成单元,用于根据所述块设备的原始数据生成所述块设备快照。
在一些实施例中,所述装置还可以包括:复制数据创建单元,所述复制数据创建单元用于若所述虚拟机快照为只读快照,则对所述虚拟机快照创建具有写权限的复制数据。
本说明书实施例中,所述创建模块1805用于创建基本快照。
在一些实施例中,所述装置还可以包括冻结文件系统指令发送模块,用于根据所述第一虚拟机的属性信息生成冻结文件系统指令,并将所述冻结文件系统指令发送至所述第一虚拟机,以使所述第一虚拟机冻结自身的文件系统。
本说明书实施例中,所述冻结文件系统指令发送模块和所述创建模块1805用于创建冻结文件系统快照。
在一些实施例中,所述装置还可以包括创建外部内存镜像模块,用于根据所述第一虚拟机的内存数据创建外部内存镜像。
在一些实施例中,所述装置还可以包括存储模块,用于存储所述虚拟机快照与所述外部内存镜像。
在一些实施例中,所述创建模块1805、创建外部内存镜像模块和存储模块用于创建带内存快照。
在一些实施例中,所述装置还可以包括恢复虚拟机快照模块,所述恢复恢复虚拟机快照模块进一步可以包括:
第二请求信息接收单元,用于接收恢复虚拟机快照的第二请求信息,所述第二请求信息中包括待恢复快照的属性信息;所述待恢复快照对应的第二虚拟机包括至少一个块设备;
第二虚拟机块设备获取单元,用于根据所述待恢复快照的属性信息获取所述第二虚拟机中各个块设备的块设备信息;
恢复单元,用于基于所述待恢复快照的属性信息和所述第二虚拟机中各个块设备的块设备信息,对所述待恢复快照进行恢复。
在一些实施例中,所述恢复单元进一步可以包括:
查找子单元,所述查找子单元用于基于所述待恢复快照的属性信息和所述第二虚拟机中各个块设备的块设备信息,在存储系统中查找与所述第二虚拟机中的块设备对应的块设备快照;
虚拟机恢复快照获取子单元,用于基于查找到的各个块设备快照得到所述第二虚拟机对应的虚拟机恢复快照;
恢复快照复制数据创建子单元,用于对所述虚拟机恢复快照创建具有写权限的恢复快照复制数据;
替换子单元,用于使用所述恢复快照复制数据替换所述第二虚拟机中的相关块设备。
在一些实施例中,所述第二请求信息接收单元、第二设备配置信息获取单元、查找子单元、虚拟机恢复快照获取子单元、恢复快照复制数据创建子单元、替换子单元用于恢复基本快照或冻结文件系统快照。
在一些实施例中,所述恢复单元还可以包括:
下载子单元,用于下载所述存储系统中存储的所述第二虚拟机的外部内存镜像;
重新存储子单元,用于将所述第二虚拟机的外部内存镜像重新存储至所述第二虚拟机。
在一些实施例中,所述第二请求信息接收单元、第二设备配置信息获取单元、查找子单元、虚拟机恢复快照获取子单元、恢复快照复制数据创建子单元、替换子单元、下载子单元、重新存储子单元用于恢复带内存快照。
在一些实施例中,所述装置还可以包括删除虚拟机快照模块,所述删除虚拟机快照模块包括:
第三请求信息接收单元,用于接收删除虚拟机快照的第三请求信息,所述第三请求信息中包括待删除快照的属性信息;所述待删除快照对应的第三虚拟机包括至少一个块设备;
删除单元,用于基于所述待删除快照的属性信息对所述待删除快照进行删除。
在一些实施例中,所述删除单元包括第一删除子单元,用于删除将所述待删除快照的属性信息作为前缀的快照和复制数据。
在一些实施例中,所述第三请求信息接收单元、第一删除单元用于删除基本快照或冻结文件系统快照。
在一些实施例中,所述删除虚拟机快照模块还可以包括:
第二删除单元,用于删除存储在存储系统中的所述第三虚拟机的外部内存镜像。
在一些实施例中,所述第三请求信息接收单元、第一删除单元、第二删除单元用于带内存快照。
本说明书实施例中,所述装置还可以包括:
第一计算模块,用于计算未执行原始数据和复制数据分离操作的快照的存储容量;
第二计算模块,用于计算存储系统的当前使用率;
预估模块,用于基于所述存储容量和所述当前使用率,预估所述未执行原始数据和复制数据分离操作的快照在执行分离操作之后,所述存储系统的实际使用率;
停止模块,用于当所述实际使用率大于预设阈值时,停止创建虚拟机快照或恢复虚拟机快照的操作。
需要说明的是,所述的装置实施例中的装置与方法实施例基于同样地发明构思。
本申请实施例还提供了一种虚拟机快照管理的服务器,该服务器包括处理器和存储器,该存储器中存储有至少一条指令、至少一段程序、代码集或指令集,该至少一条指令、该至少一段程序、该代码集或指令集由该处理器加载并执行以实现如上述方法实施例所提供的虚拟机快照管理方法。
本申请的实施例还提供了一种存储介质,所述存储介质可设置于终端之中以保存用于实现方法实施例中一种非结构化数据的检索方法相关的至少一条指令、至少一段程序、代码集或指令集,该至少一条指令、该至少一段程序、该代码集或指令集由该处理器加载并执行以实现上述方法实施例提供的虚拟机快照管理方法。
可选地,在本说明书实施例中,存储介质可以位于计算机网络的多个网络服务器中的至少一个网络服务器。可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本说明书实施例所述存储器可用于存储软件程序以及模块,处理器通过运行存储在存储器的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、功能所需的应用程序等;存储数据区可存储根据所述设备的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器还可以包括存储器控制器,以提供处理器对存储器的访问。
本申请实施例所提供的虚拟机快照管理方法实施例可以在移动终端、计算机终端、服务器或者类似的运算装置中执行。以运行在服务器上为例,图19是本申请实施例提供的一种虚拟机快照管理方法的服务器的硬件结构框图。如图19所示,该服务器1900可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(CentralProcessing Units,CPU)1910(处理器1910可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器1930,一个或一个以上存储应用程序1923或数据1922的存储介质1920(例如一个或一个以上海量存储设备)。其中,存储器1930和存储介质1920可以是短暂存储或持久存储。存储在存储介质1920的程序可以包括一个或一个以上模块,每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器1910可以设置为与存储介质1920通信,在服务器1900上执行存储介质1920中的一系列指令操作。服务器1900还可以包括一个或一个以上电源1960,一个或一个以上有线或无线网络接口1950,一个或一个以上输入输出接口1940,和/或,一个或一个以上操作系统1921,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
输入输出接口1940可以用于经由一个网络接收或者发送数据。上述的网络具体实例可包括服务器1900的通信供应商提供的无线网络。在一个实例中,输入输出接口1940包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,输入输出接口1940可以为射频(RadioFrequency,RF),其用于通过无线方式与互联网进行通讯。
本领域普通技术人员可以理解,图19所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,服务器1900还可包括比图19中所示更多或者更少的组件,或者具有与图19所示不同的配置。
由上述本申请提供的虚拟机快照管理方法、装置、服务器或存储介质的实施例可见,一方面,可以根据用户在虚拟机快照管理操作界面上的选择,按照不同的管理方式对虚拟机快照进行创建、恢复或删除,现了支持多场景模式的快照管理,第二方面,以虚拟机的属性信息获取各个块设备的块设备信息,基于各个块设备创建出的各个块设备快照得到虚拟机对应的虚拟机快照,实现以虚拟机为整体进行快照的操作,第三方面,创建出的快照以快照链的方式呈现给用户,方便用户查看,提高用户体验,第四方面,通过冻结虚拟机文件系统或对虚拟机内存数据进行保存,保证了虚拟机数据的安全性和一致性,第五方面,使用Ceph rbd创建快照,快照的创建和回滚能够达到秒级,第六方面,通过设置的存储集群容量预估算法,当Ceph的存储容量达到了警告水位,则不允许创建或者恢复快照,从而有效地保证了后端存储集群的稳定性。
需要说明的是:上述本申请实施例先后顺序仅仅为了描述,不代表实施例的优劣。且上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置和服务器实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。