Docker容器中检查点和恢复点的功能实现方法及系统技术方案

技术编号:23212511 阅读:37 留言:0更新日期:2020-01-31 21:46
本发明专利技术涉及Docker容器中检查点和恢复点的功能实现方法及系统,所述系统包括内核空间及用户空间,其中:内核空间包括:用于实现计算机的功能的基础进程和应用程序模块,用于通过基础进程和应用程序模块,获取用户空间内运行的进程的镜像信息的寄生代码模块以及,用于保存从暂停的进程收集的镜像信息的镜像进程和应用程序模块;用户空间包括:用于运行相应程序的进程和应用程序模块,用于暂停进程并收集暂停进程镜像信息的检查点功能模块以及,用于保存镜像信息的镜像进程和应用程序模块。本发明专利技术使得对容器暂停、恢复、动态迁移、容器整体迁移、无缝内核升级、网络负载均衡,桌面环境暂停、恢复,应用程序远程调试、过程复制等等功能变成可能。

Function implementation method and system of checkpoint and recovery point in docker container

【技术实现步骤摘要】
Docker容器中检查点和恢复点的功能实现方法及系统
本专利技术涉及虚拟机数据恢复
,具体涉及一种Docker容器中检查点和恢复点的功能实现方法及系统。
技术介绍
云计算是一种新兴的共享基础架构的方法,它将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和各种软件服务。云计算的底层需要虚拟化技术支持,比较出名的有vmware公司的虚拟化技术,它提供云计算和硬件虚拟化的软件和服务,产品有VMwareWorkstation、VMwareServer,允许用户创建和运行多个X86虚拟机,虚拟机可以暂停、恢复运行。Docker技术基于云计算,是一个开放源代码软件项目,让应用程序布署在软件容器下的工作可以自动化进行,借此在Linux操作系统上,提供一个额外的软件抽象层,和操作系统层虚拟化的自动管理机制。Docker基于Linux内核的cgroup、namespace、以及AUFS类的UnionFS等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。Docker在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护。使得Docker技术比虚拟机技术更为轻便、快捷,docker和检查点、还原点的关系如图1所示。传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便,占用空间更小,有的容器只有几十M,传统虚拟机空间需要GB,在一个安装几十个虚拟机的计算机上可以安装上千个容器。在虚拟机的使用中,可以将虚拟机暂停运行,创建快照,预览一个快照,决定是否把系统恢复到创建这个快照时的状态,快照就是一个存储功能,它允许管理员为一个虚拟机的操作系统、应用程序和数据在特定时间创建一个恢复点。快照会把虚拟机当前的磁盘镜像保存为一个COW卷,并可以在以后把虚拟机恢复到虚拟机创建快照时的状态。而容器快照的检查点,类似虚拟机的快照功能,恢复点恢复到容器运行时的状态。目前在Windows平台下VMwareWorkstation、VMwareServer虚拟机系列,OracleVirtualBox是甲骨文公司XVM虚拟化平台技术的一部分。它提供用户在32位或64位的Windows、Solaris及Linux操作系统上虚拟其它x86的操作系统。这些虚拟机都提供暂停、快照、迁移、恢复功能。目前,在X86体系结构下的Redhat、Centos、Ubuntu、中标麒麟操作系统中都实现了容器的检点恢复功能,而在MIPS龙芯平台下,尚没有实现容器检查点和恢复点的功能。并且,目前虚拟机的暂停还原速度较慢,需要分钟级,容器内检查点恢复却在秒级就可以完成,响应速度提升90%以上。因此,需要设计一种Docker容器中检查点和恢复点的功能实现方法及系统。
技术实现思路
为解决现有技术存在的不足,本专利技术提供了一种Docker容器中检查点和恢复点的功能实现系统,所述功能实现系统包括内核空间及用户空间,其中:内核空间包括基础进程和应用程序模块、寄生代码模块以及镜像进程和应用程序模块,其中,基础进程和应用程序模块用于实现计算机的基础功能;寄生代码模块与基础进程和应用模块连接,用于通过基础进程和应用程序模块,获取用户空间内运行的进程的镜像信息;镜像进程和应用程序模块用于保存从暂停的进程收集的镜像信息;用户空间包括进程和应用程序模块、系统调用模块、检查点功能模块以及恢复点功能模块,其中,进程和应用程序模块通过系统调用模块与内核空间的基础进程和应用程序模块连接,用于通过系统调用模块调用内核空间内的需要运行的程序;检查点功能模块与内核空间内的基础进程和应用程序模块、寄生代码模块以及镜像进程和应用程序模块连接,用于暂停用户空间内的运行的进程,并通过寄生代码模块收集暂停进程的镜像信息,并将镜像信息保存至镜像进程和应用程序模块;恢复点功能模块与镜像进程和应用程序模块连接,用于根据镜像信息恢复暂停的进程。其中,所述寄生代码模块由检查点功能模块通过内核空间的ptrace接口注入寄生代码形成。其中,所述检查点功能模块通过内核空间的ptrace接口暂停用户空间内的运行的进程。其中,所述检查点功能模块通过如下步骤暂停正在运行的进程并获取进程的镜像信息:步骤Sa:通过ptrace接口冻结目标进程,并向该目标进程注入寄生代码;步骤Sb:寄生代码侵入对应的特定目标进程,对进程进行透明监控,获取文件描述符;步骤Sc:获取目标进程的socket及netns信息;步骤Sd:获取目标进程procfs中特定PID的内容;步骤Se:通过寄生代码模块获取目标进程的系统调用并保存;步骤Sf:保存目标进程内存页的图形文件;步骤Se:检查目标进程中所有子进程的CRIU检查点。其中,所述检查点功能模块的功能还包括:暂停正在运行的进程中,收集进程运行时的镜像信息,并于暂停正在运行的进程后,解锁镜像信息并返回结果,供恢复点功能模块恢复对应的进程。本专利技术另外提供了一种Docker容器中检查点和恢复点的功能实现方法,包括如下步骤:检查点功能的实现:步骤S1:通过ptrace接口追踪并冻结暂停目标进程;步骤S2:将寄生代码注入目标进程,对目标进程进行透明监控,获取文件描述符;步骤S3:获取目标进程的信息,以生成对应的镜像信息;步骤S4:检查目标进程中所有子进程的CRIU检查点;恢复点功能的实现:步骤S5:通过步骤S3中收集到的镜像信息恢复目标进程。其中,所述步骤S1中,通过ptrace接口追踪目标进程包括如下步骤:步骤S11:通过命令行获取目标进程的进程组父节点的进程号$pid;步骤S12:备份器通过该进程号$pid,遍历/proc/$pid/task目录,收集线程信息;步骤S13:备份器继续遍历/proc/$pid/task/$tid/children迭代收集子进程。其中,所述步骤S3中,获取目标进程的信息包括:socket、netns信息,其通过/proc文件系统获取;procfs中特定PID的内容;目标进程的系统调用,通过寄生代码获取;以及目标进程内存页的图像文件。其中,特定PID的内容包括:/proc/PID/maps、/proc/PID/map_files//proc/PID/status/proc/PID/mountinfo,/PROC/$PID/SMAPS、/PROC/$PID/MMASPORE和/OF/PROC/$PID/PIPMAP、/PROC/$PID/FD、网络通道参数或内存映射。其中本文档来自技高网
...

【技术保护点】
1.一种Docker容器中检查点和恢复点的功能实现系统,其特征在于,所述功能实现系统包括内核空间及用户空间,其中:/n内核空间包括基础进程和应用程序模块、寄生代码模块以及镜像进程和应用程序模块,其中,/n基础进程和应用程序模块用于实现计算机的基础功能;/n寄生代码模块与基础进程和应用模块连接,用于通过基础进程和应用程序模块,获取用户空间内运行的进程的镜像信息;/n镜像进程和应用程序模块用于保存从暂停的进程收集的镜像信息;/n用户空间包括进程和应用程序模块、系统调用模块、检查点功能模块以及恢复点功能模块,其中,/n进程和应用程序模块通过系统调用模块与内核空间的基础进程和应用程序模块连接,用于通过系统调用模块调用内核空间内的需要运行的程序;/n检查点功能模块与内核空间内的基础进程和应用程序模块、寄生代码模块以及镜像进程和应用程序模块连接,用于暂停用户空间内的运行的进程,并通过寄生代码模块收集暂停进程的镜像信息,并将镜像信息保存至镜像进程和应用程序模块;/n恢复点功能模块与镜像进程和应用程序模块连接,用于根据镜像信息恢复暂停的进程。/n

【技术特征摘要】
1.一种Docker容器中检查点和恢复点的功能实现系统,其特征在于,所述功能实现系统包括内核空间及用户空间,其中:
内核空间包括基础进程和应用程序模块、寄生代码模块以及镜像进程和应用程序模块,其中,
基础进程和应用程序模块用于实现计算机的基础功能;
寄生代码模块与基础进程和应用模块连接,用于通过基础进程和应用程序模块,获取用户空间内运行的进程的镜像信息;
镜像进程和应用程序模块用于保存从暂停的进程收集的镜像信息;
用户空间包括进程和应用程序模块、系统调用模块、检查点功能模块以及恢复点功能模块,其中,
进程和应用程序模块通过系统调用模块与内核空间的基础进程和应用程序模块连接,用于通过系统调用模块调用内核空间内的需要运行的程序;
检查点功能模块与内核空间内的基础进程和应用程序模块、寄生代码模块以及镜像进程和应用程序模块连接,用于暂停用户空间内的运行的进程,并通过寄生代码模块收集暂停进程的镜像信息,并将镜像信息保存至镜像进程和应用程序模块;
恢复点功能模块与镜像进程和应用程序模块连接,用于根据镜像信息恢复暂停的进程。


2.如权利要求1所述的Docker容器中检查点和恢复点的功能实现系统,其特征在于:所述寄生代码模块由检查点功能模块通过内核空间的ptrace接口注入寄生代码形成。


3.如权利要求1所述的Docker容器中检查点和恢复点的功能实现系统,其特征在于:所述检查点功能模块通过内核空间的ptrace接口暂停用户空间内的运行的进程。


4.如权利要求1所述的Docker容器中检查点和恢复点的功能实现系统,其特征在于:所述检查点功能模块通过如下步骤暂停正在运行的进程并获取进程的镜像信息:
步骤Sa:通过ptrace接口冻结目标进程,并向该目标进程注入寄生代码;
步骤Sb:寄生代码侵入对应的特定目标进程,对进程进行透明监控,获取文件描述符;
步骤Sc:获取目标进程的socket及netns信息;
步骤Sd:获取目标进程procfs中特定PID的内容;
步骤Se:通过寄生代码模块获取目标进程的系统调用并保存;
步骤Sf:保存目标进程内存页的图形文件;
步骤Se:检查目标进程中所有子进程的CRIU检查点。


5.如权利要求1所述的Docker容器中检查点和恢复点的功能实现系统,其特征在于:所述检查点功能模块的功能还包括:暂停正在运行的进程中,收集进程运行时的镜像信息,并于暂停正在运行的进程后,解锁镜像信息并返回结果,供恢复点功能模块恢复对应的进程。

【专利技术属性】
技术研发人员:孟杰吕非薛皓琳张蓓刘莉
申请(专利权)人:中标软件有限公司
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1