虚拟机快照管理方法、系统及计算机可读介质与流程

文档序号:31526837发布日期:2022-09-14 14:41阅读:108来源:国知局
虚拟机快照管理方法、系统及计算机可读介质与流程

1.本发明涉及云计算技术领域,尤其涉及一种虚拟机快照管理方法、系统及计算机可读介质。


背景技术:

2.云原生定义主要是云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生以容器为基础,提高整体开发水平,形成代码和组件重用,简化云原生应用程序的维护。在容器中运行应用程序和进程,并作为应用程序部署的独立单元,实现高水平资源隔离。同时,通过集中式的编排调度系统来动态地管理和调度,并通过微服务,以明确服务间的依赖并实现互相解耦。
3.以kubernetes为代表的容器化云平台逐渐成为了云原生技术的行业标准,容器对接的后端存储种类也越来越多。qcow2(qemu copy on write)是虚拟机磁盘镜像的一种存储格式,由于其具有支持稀疏文件、可压缩以及快照等功能,在虚拟机系统镜像中被广泛应用。使用qcow2作为容器存储还未得到大规模的使用,现有技术中基于qcow2的存储方案不能在pod运行期间执行在线快照的创建操作,而只能先将用于封装一个或者多个容器的pod后才能予以删除,并在释放对qcow2的占用后,通过qemu-img命令对qcow2执行在线快照的删除操作。然而,在前述在线快照的创建与删除操作过程中会存在业务容器发生服务中断现象,并由此被用户所感知从而导致用户体验不佳。此外,在基于容器所组建的容器化云平台场景中,现有技术存在快照数据占用存储资源而无法实现资源回收利用的缺陷。
4.有鉴于此,有必要对现有技术中的虚拟机快照管理方法予以改进,以解决上述问题。


技术实现要素:

5.本发明的目的在于揭示一种虚拟机快照管理方法、系统及计算机可读介质,用以解决现有技术中的虚拟机快照管理过程中所存在的前述技术问题,并尤其为了解决在基于容器所组建的容器化云平台场景中所存在的因执行在线快照的创建与删除操作所导致的业务容器发生服务中断现象的技术问题,以为用户提供持续的业务支撑,从而确保良好的用户体验。
6.为实现上述目的之一,本发明提供了一种虚拟机快照管理方法,对虚拟机快照予以快照管理,包括:建立数据面组件与控制面组件之间的第一进程会话;获取响应业务的pod所对应的磁盘镜像文件所关联的持久化卷声明;通过独立于所述第一进程会话的第二进程会话添加磁盘镜像文件至数据面组件,以将所述磁盘镜像文件作为虚拟机进程所创建并作为所述pod响应业务的目标块设备,所述第二进程会话在第一进程会话结束后由所述控制面组件向数据面组件发起建立。
7.作为本发明的进一步改进,还包括:
创建虚拟机进程与网络块设备客户端,并启动网络块设备服务端;获取响应业务的pod所对应的磁盘镜像文件所关联的持久化卷声明;添加磁盘镜像文件至虚拟机进程以作为虚拟机进程块设备;添加所述虚拟机进程块设备至网络块设备服务端,在所述网络块设备服务端与网络块设备客户端之间建立第三进程会话,通过所述第三进程会话将至少一虚拟机进程块设备挂载至所述pod,以作为所述pod响应业务的目标块设备。
8.作为本发明的进一步改进,所述创建虚拟机进程与网络块设备客户端由数据面组件执行,启动网络块设备服务端由虚拟机进程执行,且所述虚拟机进程由所述数据面组件所创建。
9.作为本发明的进一步改进,所述将至少一虚拟机进程块设备挂载至所述pod还包括:将虚拟机进程块设备执行格式化文件系统后挂载至所述pod,以作为所述pod响应业务的目标块设备,所述目标块设备为运行pod的存储设备。
10.作为本发明的进一步改进,所述获取响应业务的pod所对应的磁盘镜像文件所关联的持久化卷声明由控制面组件自所述数据面组件获取。
11.作为本发明的进一步改进,所述添加磁盘镜像文件至虚拟机进程包括:逻辑上独立于所述数据面组件的控制面组件获取持久化卷声明所关联的磁盘镜像文件所在pod目录。
12.作为本发明的进一步改进,所述虚拟机快照管理方法还包括:基于unix域套接字在数据面组件与控制器之间建立所述第一进程会话,以通过第二进程会话将所述磁盘镜像文件添加至虚拟机进程以作为所述虚拟机进程块设备;在将所述虚拟机进程块设备添加至网络块设备服务端后,通过所述第三进程会话将至少一虚拟机进程块设备挂载至所述pod,以作为所述pod响应业务的目标块设备,其中,所述第三进程会话独立于第一进程会话与第二进程会话。
13.作为本发明的进一步改进,在基于unix域套接字在数据面组件与控制器之间建立所述第一进程会话之后,还包括:将当前状态的虚拟机进程块设备同步至虚拟机进程,所述虚拟机进程在接收到当前状态的虚拟机进程块设备后生成外部快照并同步更新磁盘镜像文件所对应的元数据;将当前状态中pod的读写位置偏移至外部快照;将持久化卷声明关联的磁盘镜像文件修改为所述外部快照所关联的磁盘镜像文件;下发qemu-img命令加载磁盘镜像文件至虚拟机进程并形成关联至被磁盘镜像文件所关联的虚拟机进程块设备;对所述被磁盘镜像文件所关联的虚拟机进程块设备执行调度操作,以挂载至所述pod。
14.作为本发明的进一步改进,所述快照管理为快照创建,并在所述快照创建过程中记录基于快照点所确定的元数据所生成的快照链,所述快照链根据快照点确定多个虚拟机进程块设备的块设备属性,所述块设备属性保存描述父子关系的描述信息,所述描述信息被映射至持久化卷声明所关联的资源和/或块设备;
其中,所述描述信息包括:磁盘镜像文件名称、磁盘镜像文件保存路径、磁盘镜像文件创建时间或者磁盘镜像文件的更新时间中的一种或者几种的任意组合。
15.作为本发明的进一步改进,所述快照管理为快照删除,并在所述快照删除过程中由控制面组件中所部署的控制器读取磁盘镜像文件所对应的元数据,遍历查询快照链以确定被执行快照删除的快照相邻快照点所对应的磁盘镜像文件,发送快照合并请求及被执行快照删除的快照相邻快照点所对应的磁盘镜像文件所对应的块设备属性至虚拟机进程,以在所述虚拟机进程中调用所述块设备属性执行虚拟机进程块设备的合并操作。
16.作为本发明的进一步改进,所述虚拟机进程块设备的合并操作包括:断开与被执行合并操作的虚拟机进程块设备相邻的磁盘镜像文件之间的快照链;将在后快照点所对应的磁盘镜像文件与被执行合并操作的虚拟机进程块设备所对应的磁盘镜像文件的任意一个在先快照点所对应的磁盘镜像文件之间重新建立快照链;删除被执行删除的快照所对应的磁盘镜像文件以及被执行删除的快照相邻快照点所对应的磁盘镜像文件之间已经保存于快照链的描述信息;释放被执行删除的快照所对应的磁盘镜像文件所占用资源并修改快照链。
17.基于相同发明思想,本发明还揭示了一种虚拟机快照管理系统,部署于容器化云平台,包括:部署于同一节点的数据面组件与控制面组件;所述数据面组件与控制面组件之间建立第一进程会话;所述控制面组件获取响应业务的pod所对应的磁盘镜像文件所关联的持久化卷声明;通过独立于所述第一进程会话的第二进程会话添加磁盘镜像文件至数据面组件,以将所述磁盘镜像文件作为虚拟机进程所创建并作为所述pod响应业务的目标块设备,所述第二进程会话在第一进程会话结束后由所述控制面组件向数据面组件发起建立。
18.作为本发明的进一步改进,所述数据面组件创建并部署虚拟机进程及网络块设备客户端,并启动网络块设备服务端;所述控制面组件获取响应业务的pod所对应的磁盘镜像文件所关联的持久化卷声明,添加磁盘镜像文件至虚拟机进程以作为虚拟机进程块设备;通过所述数据面组件添加所述虚拟机进程块设备至网络块设备服务端,在所述网络块设备服务端与网络块设备客户端之间建立第三进程会话,通过所述第三进程会话将至少一虚拟机进程块设备挂载至所述pod,以作为所述pod响应业务的目标块设备,其中,所述第三进程会话独立于第一进程会话与第二进程会话。
19.作为本发明的进一步改进,所述虚拟机快照管理系统还包括:部署于节点中的kubelet,所述kubelet将虚拟机进程块设备执行格式化文件系统后挂载至所述pod,以作为所述pod响应业务的目标块设备,所述目标块设备为运行pod的存储设备。
20.作为本发明的进一步改进,所述控制面组件包括:控制器与磁盘管理工具;由所述控制器基于unix域套接字在数据面组件与控制器之间建立所述第一进程会话,以通过所述第二进程会话将所述磁盘镜像文件添加至虚拟机进程,以作为所述虚拟
机进程块设备;在将所述虚拟机进程块设备添加至网络块设备服务端后,通过所述第三进程会话将至少一虚拟机进程块设备挂载至所述pod,以作为pod响应业务的目标块设备。
21.作为本发明的进一步改进,所述控制器将当前状态的虚拟机进程块设备同步至虚拟机进程,所述虚拟机进程在接收到当前状态的虚拟机进程块设备后生成外部快照并通过所述控制器同步更新磁盘镜像文件所对应的元数据;将当前状态中pod的读写位置偏移至外部快照;由所述控制器将持久化卷声明关联的磁盘镜像文件修改为所述外部快照所关联的磁盘镜像文件;所述磁盘管理工具下发qemu-img命令加载磁盘镜像文件至虚拟机进程并形成关联至被磁盘镜像文件所关联的虚拟机进程块设备;通过所述kubelet对所述被磁盘镜像文件所关联的虚拟机进程块设备执行调度操作,以挂载至所述pod。
22.作为本发明的进一步改进,所述数据面组件、控制面组件、网络块设备服务端及网络块设备客户端均部署于容器化云平台的节点,所述节点为容器化云平台的工作节点或者控制节点。
23.最后,本发明还揭示了一种计算机可读介质,所述计算机可读介质中存储有计算机程序指令,所述计算机指令被一处理器读取并运行时,执行如前述发明创造所揭示的虚拟机快照管理方法中的步骤。
24.与现有技术相比,本发明的有益效果是:在本技术中,控制面组件与数据面组件之间先后建立独立的第一进程会话与第二进程会话,将响应pod所对应磁盘镜像文件所关联的持久化卷声明添加至由虚拟机进程中以作为虚拟机进程所创建并作为pod响应业务的目标块设备。由于将磁盘镜像文件的读写操作与快照及快照所关联的持久化卷声明在虚拟机进程执行外部快照的生成及快照链读写位置切换的过程中网络块设备服务端无法感知,由此实现了可在pod被创建并运行期间执行快照管理,从而避免了现有技术需要删除pod后才能对磁盘镜像文件进行取快照操作,从而解决了在基于容器所组建的容器化云平台场景中所存在的因执行在线快照的创建与删除操作所导致的业务容器发生服务中断现象的技术问题,从而通过业务容器为用户提供持续的业务支撑,确保了良好的用户体验。
附图说明
25.图1为本发明一种虚拟机快照管理方法的整体流程图。
26.图2为通过独立于所述第一进程会话的第二进程会话添加磁盘镜像文件至数据面组件,以将所述磁盘镜像文件作为虚拟机进程所创建并作为所述pod响应业务的目标块设备的详细流程图。
27.图3为运行本发明一种虚拟机快照管理方法的节点使用qcow2文件(磁盘镜像文件的一种具体实例)作为后端存储,并对后端存储中的存储对象执行在线快照创建操作与在线快照删除操作的示意图。
28.图4为由节点导出多个块设备并将目标块设备关联至至少一个pod,并由至少一个
pod封装成向响应用户发起请求的业务所依赖的业务容器的示意图。
29.图5为控制器将持久化卷声明(pvc)的后端关联的基于qcow2的在先文件通过更新在先文件的快照链以形成新的在后快照点所对应的文件的实例图,其中,根据设定的创建快照的快照点所形成的多个文件形成快照链。
30.图6为daemonset(数据面组件的一种具体实例)基于qemu(虚拟机进程的一种具体实例)所创建的虚拟机执行生成外部快照及后端存储中读写位置发生切换的示意图,其中,文件-1~文件-3保存基于快照链的实例图。
31.图7为通过在线快照删除方式删除快照链中的一个快照(即,文件-2)并将被在线删除的快照所包含的元数据中的child字段信息合并至前一个快照点所对应的快照(即,文件-1)的实例图。
32.图8为在线快照删除过程中删除kubernetes对象中的快照-1所关联的作为后端存储的文件-2,并将快照-2与已经被删除的快照-1执行合并操作后将最新读写位置关联至作为后端存储的文件-1的实例图。
33.图9为删除快照-1后由控制器修改快照链并在最新读写位置所对应的作为后端存储的文件-3与文件-1之间重新建立基于快照链的关联关系的示例图。
34.图10为基于unix域套接字在数据面组件与控制面组件中的控制器之间建立第一进程会话之后执行虚拟机进程块设备执行调度操作,以挂载至pod的具体流程图。
35.图11为本发明一种计算机可读介质的拓扑图。
具体实施方式
36.下面结合附图所示的各实施方式对本发明进行详细说明,但应当说明的是,这些实施方式并非对本发明的限制,本领域普通技术人员根据这些实施方式所作的功能、方法、或者结构上的等效变换或替代,均属于本发明的保护范围之内。
37.简要而言,本发明所揭示的虚拟机快照管理方法(以下或简称“快照管理方法”)、虚拟机快照管理系统(以下或简称“快照管理系统”)及计算机可读介质所包含的核心技术方案旨在实现对云原生架构,例如基于kubernetes的容器化云平台中的虚拟机快照予以管理,并可等同理解为对虚拟机快照予以快照管理。快照管理可被理解为快照的在线快照创建、在线快照删除、快照合并等操作。磁盘镜像文件包括qcow1、qcow2及qcow3,并在本实施例中以qcow2为范例予以示范性阐述,且本技术各实施例所揭示的技术方案亦可适用于qcow1及qcow3,并将qcow1或者qcow3添加至虚拟机进程101中以生成虚拟机进程块设备(即,图3中的block112),故,在本实施例中予以省略阐述。同时,本技术各实施例所揭示的虚拟机快照是指虚拟机的全量快照。前述qcow1、qcow2及qcow3均为现有技术中常用的磁盘镜像文件格式。
38.同时,用户可在诸如运行安卓系统、ios系统、linux系统等操作系统的终端设备中启动触发该虚拟机快照管理方法的启动并执行,终端设备包括但不限于台式电脑、智能手机、平板电脑、智能可穿戴电子设备等基于图形用户界面(gui)以访问运行该虚拟机快照管理方法或者部署该虚拟机快照管理系统的容器化云平台,并启动该虚拟机快照管理方法,或者控制该虚拟机快照管理系统以对虚拟机快照予以管理。同时,本技术各个实施例中管理的快照为内部快照,而内部快照(或称“内置快照,internal snapshot”)是指使用单个磁
盘镜像文件(例如qcow2文件)来保存快照和快照之后的改动,而外部快照(或称“外置快照,external snapshot”)在原读写块设备外生成新的块设备,原块设备变为只读状态的块设备并作为快照本身,新生成的块设备用来后面读写,存放基于快照链的变化数据。外部快照所形成的外部快照链可以合并,并与内部快照合并形成全量备份。同时,本技术揭示的虚拟机快照管理系统部署于容器化云平台的节点100中,以运行虚拟机快照管理方法的具体步骤。参图1至图3所示,本实施例首先揭示了一种虚拟机快照管理方法,包括以下步骤s1至步骤s3。
39.简要而言,本实施例所揭示的一种虚拟机快照管理方法运行于作为容器化云平台的工作节点或者控制节点中,且图3中的节点100可被理解为工作节点或者控制节点。节点100中部署并运行数据面组件10、控制面组件20、网络块设备服务端111及网络块设备客户端102。容器化云平台由kubernetes组建并执行应用部署。步骤s1、建立数据面组件10与控制面组件20之间的第一进程会话。本实施例中的第一进程会话、第二进程会话及第三进程会话均为进程会话。进程会话建立于一个逻辑终端(例如,数据面组件10)与另一个逻辑终端(例如,控制面组件20)之间基于linux操作系统执行调度的基本单位,一个或者多个进程组成进程会话(或称“会话”)。
40.在启动并执行该虚拟机快照管理方法之前需要在节点100中预先创建以部署数据面组件10,并通过数据面组件10中所创建的虚拟机进程101(即,qemu)启动创建与虚拟机进程101逻辑上相互隔离的网络块设备客户端102。当用户发起创建pod请求,且该创建pod请求所对应的后端存储为磁盘镜像文件的持久化卷声明(pvc)时,可通过控制面组件20所部署的控制器201获取持久化卷声明所对应并作为后端存储的磁盘镜像文件所在的目录(例如,qcow2文件在节点100中的保存路径)。控制器201与数据面组件10之间通过uds(即,基于unix域套接字,unix domain socket)所建立的第一进程会话,即可将作为后端存储的磁盘镜像文件(例如qcow2文件)添加至虚拟机进程101中,虚拟机进程101将block112基于第三进程会话将block112添加至网络块设备客户端102中。网络块设备服务端111与网络块设备客户端102之间交互,以将block112导出并形成节点100所形成的块设备103。参图4所示,在实际环境中,节点100可导出多个块设备,即,块设备103a~块设备103z,并在执行文件系统格式化处理后形成可被挂载的目标块设备103-1~目标块设备103-m,其中,目标块设备103-1~目标块设备103-m作为pod的后端存储。需要指出的是,pod 是kubernetes中最小的资源管理组件,因此pod也是最小化运行容器化应用的一种资源对象。
41.步骤s2、获取响应业务的pod所对应的磁盘镜像文件所关联的持久化卷声明。用户在创建pod过程中使用后端存储为例如qcow2的磁盘镜像文件的持久化卷声明(pvc),控制面组件20中的控制器201自动获取该持久化卷声明所关联的pod目录,以获取持久化卷声明(pvc)所关联的磁盘镜像文件所在pod目录,且pod目录保存在pod中。由此,可在后续操作中通过控制器201与数据面组件10之间建立基于uds(unix domain socket,uds)的第一进程会话,以将例如qcow2的磁盘镜像文件添加至虚拟机进程101中,从而形成虚拟机进程块设备,即图3中的block112。
42.步骤s3、通过独立于第一进程会话的第二进程会话添加磁盘镜像文件至数据面组件,以将磁盘镜像文件作为虚拟机进程101所创建并作为pod响应业务的目标块设备101-1~目标块设备103-m,第二进程会话在第一进程会话结束后由控制面组件20向数据面组件10
发起建立。参图2所示,步骤s3具体包括如下子步骤s31~子步骤s34。
43.子步骤s31、创建虚拟机进程与网络块设备客户端,并启动网络块设备服务端111。
44.子步骤s32、获取响应业务的pod所对应的磁盘镜像文件所关联的持久化卷声明(pvc)。
45.子步骤s33、添加磁盘镜像文件至虚拟机进程101以作为虚拟机进程块设备,并具体为通过逻辑上独立于数据面组件10的控制面组件20获取持久化卷声明(pvc)所关联的磁盘镜像文件所在pod目录,且pod目录保存在pod中。
46.子步骤s34、添加虚拟机进程块设备至网络块设备服务端111,在网络块设备服务端111与网络块设备客户端102之间建立第三进程会话,通过第三进程会话将至少一虚拟机进程块设备挂载至pod,以作为pod响应业务的目标块设备。例如,在本实施例中,将至少一虚拟机进程块设备挂载至pod还包括:将虚拟机进程块设备执行格式化文件系统后挂载至pod,以作为pod响应业务的目标块设备,即图4中的目标块设备103-1~目标块设备103-m,目标块设备为运行pod的存储设备。虚拟机进程块设备(即,图3中的block112)生成外部快照,并根据外部快照由虚拟机进程101更新磁盘镜像文件的元数据。元数据被更新后,文件-1对应的目标块设备只保留文件-2对应快照点所对应的快照数据,从而使得pod的读写位置发生偏移,以偏移至文件-2所在新的快照点所形成的外部快照(即,图6中的快照-2)。控制器201将持久化卷声明(pvc)中作为后端存储的磁盘镜像文件由文件-1修改为文件-2,并在修改过程中网络块设备客户端102无法被感知,即,无法感知到最新读写位置的变化,从而满足后续在线快照的创建与在线快照的删除等操作。
47.因此,在本实施例中,控制器201将持久化卷声明(pvc)所关联的作为后端存储的磁盘镜像文件由文件-1变更为文件-2,在此过程中网络块设备客户端102由于无法被感知到作为后端存储(即,文件-1~文件-3)中的当前状态读写位置的改变,由此实现了在线快照的创建。同理所述,在线快照删除过程中网络块设备客户端102无法被感知到作为后端存储的中当前状态读写位置的改变。因此,在使用qcow2为实例的磁盘镜像文件作为后端存储的场景时,无论是在线快照的创建还是删除操作,均可基于快照链基于快照点查询到快照链上任意一个快照点所对应的快照,并通过快照对磁盘镜像文件读写位置的偏移,从而准确地找到快照点所对应的磁盘镜像文件。另,由于快照点的外部快照与文件-1~文件-3存在唯一的对应关系,因此使得挂载至pod并形成业务容器的目标块设备并不发生变动,因此在快照以在线方式执行创建或者删除过程中业务容器并不发生变动,从而使得基于业务容器并响应用户的服务不会发生变动且不会被用户所感知。同时,创建虚拟机进程101与网络块设备客户端111由数据面组件10执行,启动网络块设备服务端111由虚拟机进程101执行,且虚拟机进程101由数据面组件10所创建。获取响应业务的pod所对应的磁盘镜像文件所关联的持久化卷声明(pvc)由控制面组件20自数据面组件10获取。例如,数据面组件10为daemonset(或称“守护进程控制器”),以通过daemonset确保构成计算机集群的多个节点100中的任意一个节点100均运行一个与业务容器相同的业务容器副本(container replica),以保证新加入计算机集群的节点能够自动地创建pod,同时保证某一节点被移除时即使删除该节点所运行的pod,也能够保证该pod所封装出的容器服务基于业务容器副本不发生中断,从而保证服务不发生中断。
48.虚拟机快照管理方法还包括:基于unix域套接字在数据面组件10与控制面组件20
中所部署的控制器201之间建立第一进程会话,以通过第二进程会话将磁盘镜像文件添加至虚拟机进程101以作为虚拟机进程块设备(即,block112);在将虚拟机进程块设备添加至网络块设备服务端111后,通过第三进程会话将至少一虚拟机进程块设备挂载至pod,以作为pod响应业务的目标块设备,其中,第三进程会话独立于第一进程会话与第二进程会话。
49.前述虚拟机进程块设备为图3中的block112,且可将一个或者多个block112在执行文件系统格式化处理后形成最终的m个目标块设备,即图4所示出的目标块设备103-1~目标块设备103-m,并由控制器201对目标块设备执行调度操作,以调度一个或者多个目标块设备挂载一个或者多个pod。参图4所示,pod-1可封装为响应业务a的业务容器,pod-2~pod-i可封装为响应业务b的业务容器,剩余的至少两个pod(即,包含pod-n的至少两个pod)可封装为响应业务c的业务容器。因此,本实施例中对业务容器的管理是通过pod进行管理予以实现的,且一个pod可运行一个或者多个容器,而业务容器可通过对pod这种资源对象的调度将一个或者多个pod整体地封装为一个业务容器,以通过业务容器向上形成响应用户的业务。前述文件系统格式化操作可属于第三进程会话的一部分,也可独立于第三进程会话。
50.参图10所示,在基于unix域套接字数据面组件10与控制器201之间建立第一进程会话之后,还包括如下子步骤s401~子步骤s405。
51.子步骤s401、将当前状态的虚拟机进程块设备同步至虚拟机进程101,虚拟机进程101在接收到当前状态的虚拟机进程块设备后生成外部快照并同步更新磁盘镜像文件所对应的元数据。
52.子步骤s402、将当前状态中pod的读写位置偏移至外部快照。
53.子步骤s403、将持久化卷声明(pvc)关联的磁盘镜像文件外部快照所关联的磁盘镜像文件。前述关联操作由控制面组件20中的控制器201予以执行。
54.子步骤s404、由控制面组件20中的磁盘管理工具(即,qemu-img)202下发qemu-img命令加载磁盘镜像文件至虚拟机进程101并形成关联至被磁盘镜像文件所关联的虚拟机进程块设备。可选地,磁盘管理工具202所发起的qemu-img命令属于第二进程会话的一部分。
55.子步骤s405、对被磁盘镜像文件所关联的虚拟机进程块设备执行调度操作,以挂载至pod。调度操作由节点100中的kubelet40执行。kubelet40为pod管理的一个代理(agent),kubelet40主要用于执行端口监听、pod管理、容器健康检查及容器调度。
56.本实施例所揭示的虚拟机快照管理方法,对磁盘镜像文件的读写操作通过数据面组件10执行,而快照链的创建及元数据的管理及持久化卷声明(pvc)对资源的更新等操作由控制面组件20执行,且数据面组件10与控制面组件20在执行对应操作过程中所建立的第一进程会话、第二进程会话及第三进程会话在逻辑上也是独立的。同时,由于网络块设备服务端111逻辑上也独立于虚拟机进程101。因此,使得在将磁盘镜像文件的读写操作与快照及快照所关联的持久化卷声明(pvc)在虚拟机进程101执行外部快照的生成及快照链读写位置切换的过程中,由于网络块设备服务端111无法感知前述虚拟机进程101中网络块设备服务端111中读写位置的切换,由此实现了可在pod被创建后并持续运行以向用户持续地提供业务容器期间执行快照管理(即,在线快照创建与在线快照删除),从而避免了现有技术需要删除pod后才能对磁盘镜像文件根据设定的快照点执行取快照操作及后续的快照合并操作的技术问题,从而有效地避免了业务容器发生服务中断的现象。
57.本实施例进一步示出了基于qcow2文件作为磁盘镜像文件,并将qcow2文件作为响
应业务的后端存储,并在业务不被暂停或者不被中断的实例场景中对在线快照创建及在线快照删除的两种具体实例予以进一步阐述。
58.示例性地,快照管理为快照创建,并在快照创建过程中记录基于快照点所确定的元数据所生成的快照链,快照链根据快照点确定多个虚拟机进程块设备的块设备属性,虚拟机进程块设备的块设备属性(即,block112的块设备属性)保存描述父子关系(parent-child)的描述信息,描述信息被映射至持久化卷声明(pvc)所关联的资源和/或块设备;其中,描述信息包括:磁盘镜像文件名称(name)、磁盘镜像文件保存路径(filepath)、磁盘镜像文件创建时间(create time)或者磁盘镜像文件的更新时间(update time)中的一种或者几种的任意组合,并优选为同时包含前述四种类型的描述信息。前述持久化卷声明所关联的资源与块设备被理解为满足pod运行,并由节点100所形成的物理资源和/或虚拟资源。
59.参图5与图6所示,文件-1~文件-3均为基于三个快照点所确定的三个快照,并均为qcow2文件以形成前述快照链,其中,文件-1为第一个快照点所形成的外部快照,文件-2为第二个快照点所形成的外部快照,文件-3为最新读写位置所对应的外部快照。文件-1~文件-3基于快照链形成父子关系(parent-child),并借助parent name字段与child字段记录并描述快照链上相邻两个快照之间的父子关系。
60.如下代码示出了本发明所包含的在线快照创建的一种软件实例。
61.{
ꢀꢀꢀꢀ
"pvcname": "pvc-086aedeb-a702-44f8-89de-c43182957bbb",
ꢀꢀꢀꢀ
"chaininfo": [
ꢀꢀꢀꢀꢀꢀꢀꢀ
{
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"filename": "/var/lib/kubelet/ussvd/pvc-086aedeb-a702-44f8-89de-c43182957bbb/file1.qcow2",
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"nodename": "file1",
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"parentname": "",
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"childlist": [
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
" file2"
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
],
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"currentstate": "qcow2filenotuse",
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"createtime": "2022-05-09 17:39:54.05196271 +0800 cst",
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"updatetime": "2022-05-09 17:39:54.075219106 +0800 cst",
ꢀꢀꢀꢀꢀꢀꢀꢀ
},
ꢀꢀꢀꢀꢀꢀꢀꢀ
{
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"filename": "/var/lib/kubelet/ussvd/pvc-086aedeb-a702-44f8-89de-c43182957bbb/file2.qcow2",
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"nodename": " file2",
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"parentname": "file1",
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"childlist": [
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"file3"
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
],
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"currentstate": "qcow2filenotuse",
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"createtime": "2022-05-09 17:39:54.075192602 +0800 cst",
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"updatetime": "2022-05-09 17:42:25.286652536 +0800 cst",
ꢀꢀꢀꢀꢀꢀꢀꢀ
},
ꢀꢀꢀꢀꢀꢀꢀꢀ
{
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"filename": "/var/lib/kubelet/ussvd/pvc-086aedeb-a702-44f8-89de-c43182957bbb/file3.qcow2",
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"nodename": "file3",
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"parentname": "file2",
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"childlist": null,
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"currentstate": "qcow2filenotuse",
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"createtime": "2022-05-09 17:42:25.286494455 +0800 cst",
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"updatetime": "",
ꢀꢀꢀꢀꢀꢀꢀꢀ
}
ꢀꢀꢀꢀ
],}
ꢀꢀꢀꢀꢀꢀꢀ
示例性地,快照管理为在线快照删除,并在快照删除过程中由控制面组件20中所部署的控制器201读取磁盘镜像文件所对应的元数据,遍历查询快照链以确定被执行快照删除的快照相邻快照点所对应的磁盘镜像文件,发送快照合并请求及被执行快照删除的快照相邻快照点所对应的磁盘镜像文件所对应的虚拟机进程块设备的块设备属性至虚拟机进程101,以在虚拟机进程101中调用块设备属性执行虚拟机进程块设备的合并操作,即,通过虚拟机进程101所下发的block commit命令执行合并操作。
[0062]
参图5、图8与图9所示,前述虚拟机进程块设备的合并操作包括如下步骤。
[0063]
首先,断开与被执行合并操作的虚拟机进程块设备相邻的磁盘镜像文件之间的快照链。参图8所示,关联至作为后端存储的磁盘镜像文件(即,文件-1、文件-2与文件-3)均为qcow2文件,且彼此之间形成父子关系,文件-1与文件-2之间形成父子关系,文件-2与文件-3之间形成父子关系。然后,将在后快照点所对应的磁盘镜像文件与被执行合并操作的虚拟机进程块设备所对应的磁盘镜像文件的任意一个在先快照点所对应的磁盘镜像文件之间重新建立基于快照链的关联关系。由此,将快照点所对应的磁盘镜像文件向前合并至其父节点所对应的磁盘镜像文件中,以实现合并操作。在合并操作执行完毕后,作为文件-2的子节点的文件-1变更为文件-3的子节点,文件-2与分别断开与文件-1及文件-2之间的父子关系。尤其需要说明的是,在本实施例中,前述在先快照点可以是相邻一个快照周期所形成的在先快照点,也是相邻两个或者两个以上快照周期所形成的在更早的快照点。
[0064]
然后,删除被执行删除的快照所对应的磁盘镜像文件以及被执行删除的快照相邻快照点所对应的磁盘镜像文件之间已经保存于快照链的描述信息。由此,将文件-1与文件-2以及文件-2与文件-3之间断开父子关系,以在文件-1与文件-3之间直接建立父子关系。在此过程中,需要删除文件-2的元数据在快照链中基于块设备属性所保存的描述父子关系的描述信息。同时,参图9所示,由于文件-1与文件-2是第一个快照点的快照与第二个快照点的快照。在线快照删除过程中,文件-2的快照-2会与在先快照点的文件-1进行合并操作,从
而使得文件-1中的快照内容变化为同时包含快照-1与快照-2的快照数据,并将文件-2断开与文件-1及文件-3的快照链。快照-1与快照-2均为kubernetes中的快照资源(volume snapshot),并作为kubernetes对象。用户可通过对kubernetes对象的创建或者删除操作而触发本实施例所揭示的虚拟机快照管理方法中所指的在线快照创建操作及在线快照删除操作。同时,在文件-2断开与文件-1及文件-3的快照链的过程中虚拟机进程101负责快照链的修改,从而使得文件-1中增加了在快照-2的快照点所形成的文件-2所具有的增量数据,从而使得将文件-2的增量数据保存到文件-1中,并最终使得图8中灰色部分的快照-1与文件-2被删除,而仅保留快照-2与文件-1。参图7所示,合并操作导致文件-2向文件-1合并(即,merge),并导致文件-2消失。最后,释放被执行删除的快照(即,快照-1)所对应的磁盘镜像文件所占用资源,并修改快照链。由此使得节点100中的资源予以合理地予以配置,并防止被合并的文件-2占用节点100的资源。
[0065]
如下代码示出了本发明所包含的在线快照创建的一种软件实例。
[0066]
{
ꢀꢀꢀꢀ
"pvcname": "pvc-086aedeb-a702-44f8-89de-c43182957bbb",
ꢀꢀꢀꢀ
"chaininfo": [
ꢀꢀꢀꢀꢀꢀꢀꢀ
{
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"filename": "/var/lib/kubelet/ussvd/pvc-086aedeb-a702-44f8-89de-c43182957bbb/file1.qcow2",
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"nodename": "file1",
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"parentname": "",
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"childlist": [
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
" file3"
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
],
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"currentstate": "qcow2filenotuse",
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"createtime": "2022-05-09 17:39:54.05196271 +0800 cst",
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"updatetime": "2022-05-09 18:21:52.015217105 +0800 cst",
ꢀꢀꢀꢀꢀꢀꢀꢀ
},
ꢀꢀꢀꢀꢀꢀꢀꢀ
{
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"filename": "/var/lib/kubelet/ussvd/pvc-086aedeb-a702-44f8-89de-c43182957bbb/file3.qcow2",
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"nodename": "file3",
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"parentname": "file1",
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"childlist": null,
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"currentstate": "qcow2filenotuse",
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"createtime": "2022-05-09 17:42:25.286494455 +0800 cst",
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"updatetime": "",
ꢀꢀꢀꢀꢀꢀꢀꢀ
}
ꢀꢀꢀꢀ
],}
由此,基于前述实施例所揭示的虚拟机快照管理方法解决了在基于容器所组建的容器化云平台场景中所存在的因执行在线快照的创建与删除操作所导致的业务容器发生服务中断现象的技术问题,从而通过业务容器为用户提供持续的业务支撑,确保了良好的用户体验。
[0067]
基于前述实施例所揭示的一种虚拟机快照管理方法的实例,本技术还揭示了一种虚拟机快照管理系统并执行如前文所揭示的虚拟机快照管理方法的技术方案,该虚拟机快照管理系统部署于容器化云平台,且容器化云平台可包含多个节点100。在本实施例中,参图3与图4所示,由于修改快照链的操作由虚拟机进程101执行,而pod关联一个或者多个目标块设备,目标块设备又关联一个块设备。因此,在虚拟机进程101中对block112执行快照合并操作后,读写位置的切换由虚拟机进程101实现,由此对pod关联的目标块设备103-1~103-m甚至块设备103a~103z而言不会感知虚拟机进程101中读写位置的切换;同时,通过控制器201实现了对作为后端存储的磁盘镜像文件所具有的基于快照链所形成的基于快照链链接关系的改变,从而实现了容器化云平台中在线快照的删除操作不会被用户所感知。
[0068]
示例性地,本实施例所揭示的一种虚拟机快照管理系统包括:部署于同一节点(即,图3中的节点100)的数据面组件10与控制面组件20。数据面组件10与控制面组件20之间建立第一进程会话。控制面组件20获取响应业务的pod所对应的磁盘镜像文件所关联的持久化卷声明(pvc)。通过独立于第一进程会话的第二进程会话添加磁盘镜像文件至数据面组件10以作为虚拟机进程块设备,其中,第二进程会话在第一进程会话结束后由控制面组件20通过其部署的磁盘管理工具202向数据面组件10发起建立,在第二进程会话中通过磁盘管理工具202所下发的qemu-img命令将qcow2文件添加至虚拟机进程101。示例性地,节点100为基于kubernetes所构建的开源虚拟计算机系统,响应业务的业务容器由一个或者多个pod所组成,业务容器共享挂载至节点100的共享存储(未示出)、虚拟网络及业务容器声明,以对业务容器实现声明式事务管理。
[0069]
数据面组件10创建并部署虚拟机进程101及网络块设备客户端102,并网络块设备客户端102被部署后由虚拟机进程101启动网络块设备服务端111;控制面组件20获取响应业务的pod所对应的磁盘镜像文件所关联的持久化卷声明,添加磁盘镜像文件至虚拟机进程101以作为虚拟机进程块设备;通过数据面组件10添加虚拟机进程块设备至网络块设备服务端111,在网络块设备服务端111与网络块设备客户端102之间建立第三进程会话,通过第三进程会话将至少一虚拟机进程块设备挂载至pod,以作为pod响应业务的目标块设备,其中,第三进程会话独立于第一进程会话与第二进程会话。
[0070]
进一步的,参图3所示,虚拟机快照管理系统还包括:部署于节点100中的kubelet40,kubelet40受控于控制面组件20并由控制面组件20中的控制器201确定调用本次挂载的pod的api,以获取pod挂载路径,并将pod挂载路径发送至块设备103,以便于块设备103在执行格式化文件系统所形成的目标块设备103-1~103-m执行挂载至指定pod的挂载操作。由于pod是由kubelet40创建,因此kubelet40保存了pod挂载路径,由此可从kubelet40获取pod挂载路径并将pod挂载路径发送至块设备103。kubelet40将虚拟机进程块设备执行格式化文件系统后挂载至pod,以作为pod响应业务的目标块设备,目标块设备为运行pod的存储设备并作为后端存储。网络块设备客户端102为基于linux的网络块设备服务器,用户可通过将磁盘镜像文件(例如qcow1~qcow3)加载到网络块设备客户端102后可
被导出以作为块设备103,块设备103(包括块设备103a~块设备103z)基于第三进程会话实施文件系统格式化操作后,最终形成目标块设备103-1~103-m,从而将一个或者多个目标块设备103-1~103-m通过控制器201执行调度,以挂载至指定的pod中,以并由pod形成业务容器并向上支撑并响应用户向节点100所发起的业务请求。
[0071]
参图3及图4所示,在本实施例中,控制面组件20包括:控制器201与磁盘管理工具202。示例性地,由控制器201基于unix域套接字(unix domain socket,uds)与数据面组件10之间建立第一进程会话,以通过第二进程会话将磁盘镜像文件添加至虚拟机进程101,以作为虚拟机进程块设备(即,block112);在将虚拟机进程块设备添加至网络块设备服务端111后,通过第三进程会话将至少一虚拟机进程块设备挂载至pod,以作为pod响应业务的目标块设备,即,目标块设备103-1~目标块设备103-m,参数m取大于或者等于1的正整数。
[0072]
控制器201将当前状态的虚拟机进程块设备同步至虚拟机进程101,即qemu101,虚拟机进程101在接收到当前状态的虚拟机进程块设备后生成外部快照并通过控制器201同步更新磁盘镜像文件所对应的元数据;将当前状态中pod的读写位置偏移至外部快照;由控制器201将持久化卷声明关联的磁盘镜像文件外部快照所关联的磁盘镜像文件;磁盘管理工具202下发qemu-img命令加载磁盘镜像文件至虚拟机进程101并形成关联至被磁盘镜像文件所关联的虚拟机进程块设备;通过kubelet40对被磁盘镜像文件所关联的虚拟机进程块设备执行调度操作,以挂载至pod。
[0073]
数据面组件10、控制面组件20、网络块设备服务端111及网络块设备客户端102均部署于容器化云平台的同一个节点100中,节点100为容器化云平台的工作节点或者控制节点,并最优选为工作节点。工作节点还被理解为计算节点。多个工作节点或者多个工作节点与至少一个控制节点组成容器化云平台。本实施例所揭示的虚拟机快照管理系统与前述虚拟机快照管理方法中具有相同部分的技术方案,参前文所述,在此不再赘述。
[0074]
最后,参图11所示,基于前述技术方案,本实施例还揭示了一种计算机可读介质900,该计算机可读介质900中存储有计算机程序指令901,计算机程序指令901被一处理器902读取并运行时,执行如前述实例所揭示的虚拟机快照管理方法中的步骤。可选地,计算机可读介质900可配置为服务器,且该服务器运行于构建私有云、混合云或者公有云的物理设备上。同时,该计算机可读介质900还可被配置为随机存取存储器(random access memory,ram),只读存储器(read only memory,rom),可编程只读存储器(programmable read-only memory,prom),可擦除只读存储器(erasable programmable read-only memory,eprom),电可擦除只读存储器(electric erasable programmable read-only memory,eeprom)等。该计算机可读介质900用于存储程序,处理器902在接收到执行指令后,以执行前文所揭示的虚拟机快照管理方法。处理器902可能是一种集成电路芯片,具有信号的处理能力。该处理器902可以是通用处理器,包括中央处理器(central processing unit,cpu)、网络处理器(network processor,np)等;还可以是数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑
器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该通用处理器也可以是任何常规处理器。前述计算机可读介质900被部署于计算机终端或者服务器终端(以下简称“终端设备”),并可视为终端设备的一部分。终端设备嵌布并形成一图形用户界面(gui)以提供用户访问容器化云平台,并执行前述虚拟机快照管理方法的步骤及方案的实现。
[0075]
上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施方式的具体说明,它们并非用以限制本发明的保护范围,凡未脱离本发明技艺精神所作的等效实施方式或变更均应包含在本发明的保护范围之内。
[0076]
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
[0077]
此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1