基于内存压缩传输的有状态服务容器热迁移方法技术

技术编号:18444658 阅读:24 留言:0更新日期:2018-07-14 10:16
本发明专利技术涉及一种基于内存压缩传输的有状态服务容器热迁移方法,包括如下步骤:(1)环境创建:隔离出LXC容器虚拟化环境所需要的资源及状态信息,将所述资源及状态信息通过图片的方式保存并对所述LXC容器进行冷冻处理;将所述LXC容器的虚拟化环境从Linux内核中隔离出来,通过namespace机制保存所述LXC容器的虚拟化环境并恢复其进程;(2)热迁移:拷贝内存页面迁移并迁移所述内存页面。本发明专利技术方法减少冗余数据传输、提升动态迁移效率,步骤简单,操作方便。

Thermal migration method for stateful service container based on compressed memory transmission

The present invention relates to a state service container thermal migration method based on memory compression transmission, including the following steps: (1) environment creation: the resource and state information needed to isolate the virtual environment of the LXC container, save the resource and state information through the picture, and freeze the LXC container; The virtualization environment of the LXC container is isolated from the Linux kernel, and the virtualization environment of the LXC container is saved through the namespace mechanism and its process is restored; (2) heat migration: copy memory pages migrate and migrate the described memory pages. The method of the invention reduces redundant data transmission, improves dynamic migration efficiency, and has simple steps and convenient operation.

【技术实现步骤摘要】
基于内存压缩传输的有状态服务容器热迁移方法
本专利技术涉及一种基于内存压缩传输的有状态服务容器热迁移方法。
技术介绍
操作系统级虚拟化技术由于其轻量性和隔离性等特性,已经受到越来越多的重视,操作系统层次的虚拟化技术相比传统的准虚拟化技术和完全虚拟化技术的优势越来越切合工业界的需要(如对资源的按需分配,而不像传统的虚拟化技术,对资源的使用通常造成极大的浪费)。另外,由于Linux内核主线的支持,LXC将会成为系统级虚拟化技术的首选,其性能将会得到更进一步的提升,相对传统虚拟化技术的劣势也将会有所改善,以LXC为代表的系统级虚拟化技术(工业界也称为容器技术)将会击败传统的虚拟化技术而占有越来越多的席位。这点也可以从最近各大互联网公司陆续曝光自己的容器技术得到印证,如:dotCloud推出的Docker,google的lmctfy,腾讯即将发布的“弹性web引擎”也使用了容器技术,不仅如此,Heroku、OpenShift、CloudFoundry等PaaS平台都有Container技术的实现。既然系统级虚拟化技术(容器技术)如此重要,那么使容器技术具有传统的虚拟化技术的动态迁移功能就显得很有必要了。传统的虚拟化技术的动态迁移机制已经相当的成熟,然而,由于传统的虚拟化技术和容器技术的实现原理与机制都不同,所以很难将传统的虚拟化技术中成熟的动态迁移机制轻松应用到容器技术中。虽然已有容器技术(OpenVZ)实现了动态迁移机制,但是由于和作为未来主流容器技术的LXC实现原理与机制不同,不能简单应用到LXC中,并且其本身的动态迁移效率相比传统虚拟化技术并没有太大优势,还需要继续改进。传统的虚拟化技术都需要在虚拟机中运行一个额外的完整的操作系统,这不仅浪费了资源而且也降低了虚拟机的运行效率。容器化虚拟机技术则很好地解决了以上问题,不需要在虚拟机中运行一个额外的完整的操作系统,每一个虚拟机与所在的物理主机共享同一个内核。OpenVZ是目前操作系统级虚拟化技术中较成熟的技术之一,OpenVZ也是通过修改Linux内核并创建容器来达到虚拟化的目的。和其他操作系统级的虚拟化技术相比,OpenVZ较好地支持了虚拟机的动态迁移。OpenVZ的虚拟机动态迁移机制主要使用了检查点和重启机制,在虚拟机动态迁移开始时,首先在源主机和目的主机间同步容器(即虚拟机)的文件系统,然后冻结容器(其实用到了Linux内核的一种挂起进程的特性),冻结容器后会将容器中所有进程所需的资源和状态都保存到磁盘,保存状态之后还要同步在开始同步文件系统阶段改变的文件,文件系统完全同步后将保存的容器状态文件复制到目的主机,这样,目的主机拥有了迁移的容器的所有的信息,在目的主机端根据保存的迁移的容器的数据创建并恢复容器就达到了虚拟机动态迁移的目的。和OpenVZ相比,LXC是另一个比较有竞争优势的操作系统级虚拟化技术,LXC得到了Linux内核主线的支持,也就是说只要使用的是较新版本(2.6.32以后)的内核并且安装了LXC客户端管理工具,都能使用LXC的虚拟化功能,而OpenVZ只能使用特定的修改过的Linux内核,这对需要使用OpenVZ没有修改过的版本的内核的用户来说照成了不必要的麻烦。现在很多应用系统跑在linux2.6内核上,这个版本的内核只支持CGROUP和部分namespace,对容器的支撑仅仅达到了LXC的程度,无法支持libcontainer为核心的docker。而由于很多应用无法迁移到Linux3.10内核上,只能跑在2.6内核上,又需要完成热迁移动作,而且在资源很少的情况下,无法使用虚拟机那么重负载的方式。
技术实现思路
本专利技术的目的在于提供一种减少冗余数据传输、提升动态迁移效率的基于内存压缩传输的有状态服务容器热迁移方法。为达到上述目的,本专利技术提供如下技术方案:一种基于内存压缩传输的有状态服务容器热迁移方法,所述方法包括如下步骤:环境创建:隔离出LXC容器虚拟化环境所需要的资源及状态信息,将所述资源及状态信息通过图片的方式保存并对所述LXC容器进行冷冻处理;将所述LXC容器的虚拟化环境从Linux内核中隔离出来,通过namespace机制保存所述LXC容器的虚拟化环境并恢复其进程;热迁移:拷贝内存信息并迁移所述内存信息。进一步地,所述“环境创建”的具体过程为:提供源主机、目的主机及网络,所述目的主机有充足资源使得LXC容器从所述源主机迁移至其中并使所述LXC容器恢复运行;在所述LXC容器保持运行的情况下,将所述LXC容器的内存页面预拷贝迭代并将预拷贝迭代后的内存页面通过所述网络传输至所述目的主机,并将预拷贝迭代最后一轮操作留下的内存页面以及所述LXC容器的CPU状况信息同步至所述目的主机并进行停机处理以实现冷冻处理;将所述LXC容器恢复运行的内存页面从所述源主机传输至所述目的主机并保存在镜像文件中,所述目的主机创建一个新容器,并将保存在所述镜像文件中的内存页面填充至所述新容器中并运行。进一步地,所述“预拷贝迭代”具体操作为:预先设置一个阈值,并对所述LXC容器的内存页面进行预拷贝迭代操作,直至所述内存页面的数量值小于或等于所设定的阈值。进一步地,所述“预拷贝迭代”还包括:在对所述LXC容器的内存页面进行预拷贝迭代操作的同时,对预拷贝迭代操作进行内存页面的传输优化。进一步地,所述“优化”具体操作为:将当前的LXC容器的内存页面全部传输至所述目的主机;在传输所述内存页面之前,计算自上一轮内存页面传输之后,页面的脏化速率Vd,如果Vd大于Vth-max,则继续执行“计算自上一轮内存页面传输之后,页面的脏化速率Vd”;如果Vd小于Vth-max而大于Vth-min,则将本轮的内存页面传输至所述目的主机,并执行下一轮传输所述内存页面的操作;如果Vd小于Vth-min,则结束本轮操作;冻结所述LXC容器进程,将自上一轮同步之后的内存页面全部传输至所述目的主机,并将所述LXC容器的当前CPU状态及其他资源传输至所述目的主机;其中,Vd表示为内存页面的脏化速率,Vth-max表示为当前网络可用带宽,Vth-min表示为是否结束预拷贝迭代的界限。进一步地,所述“预拷贝迭代”还包括:为了使每一轮的预拷贝操作只传输上一轮预拷贝操作中被修改后的内存页面,在预拷贝操作中记录被修改的内存页面并将其标记为跟踪模式。进一步地,所述“预拷贝迭代”还包括:将所述LXC容器恢复运行的内存页面从所述源主机传输至所述目的主机时对所述内存页面进行压缩处理。进一步地,所述“压缩处理”具体为:根据对所述LCX容器内存数据的分析,将所述内存页面进行分类;借助字典,计算出将要被压缩的内存页面中的相似字或零字节的数量,并根据相似字或零字节的数量以确定所述内存页面的种类;根据确定后的种类为所述内存页面选择压缩算法并对所述内存页面进行压缩以得到压缩结果。进一步地,所述“压缩结果”包括被压缩后的内存页面及代表内存页面种类的标记。进一步地,所述“热迁移”的具体操作为:将所述LXC容器正确地从所述源主机热迁移至所述目的主机,并清理LXC容器之前在所述源主机中占用的资源。本专利技术的有益效果在于:本专利技术方法直接隔离出LXC容器所需要的虚拟环境,不需要再虚拟机中运行一个额外且完整的操作系统,大大提高了资源本文档来自技高网
...

【技术保护点】
1.一种基于内存压缩传输的有状态服务容器热迁移方法,其特征在于,所述方法包括如下步骤:环境创建:隔离出LXC容器虚拟化环境所需要的资源及状态信息,将所述资源及状态信息通过图片的方式保存并对所述LXC容器进行冷冻处理;将所述LXC容器的虚拟化环境从Linux内核中隔离出来,通过namespace机制保存所述LXC容器的虚拟化环境并恢复其进程;热迁移:拷贝内存信息并迁移所述内存信息。

【技术特征摘要】
1.一种基于内存压缩传输的有状态服务容器热迁移方法,其特征在于,所述方法包括如下步骤:环境创建:隔离出LXC容器虚拟化环境所需要的资源及状态信息,将所述资源及状态信息通过图片的方式保存并对所述LXC容器进行冷冻处理;将所述LXC容器的虚拟化环境从Linux内核中隔离出来,通过namespace机制保存所述LXC容器的虚拟化环境并恢复其进程;热迁移:拷贝内存信息并迁移所述内存信息。2.如权利要求1所述的基于内存压缩传输的有状态服务容器热迁移方法,其特征在于,所述“环境创建”的具体过程为:提供源主机、目的主机及网络,所述目的主机有充足资源使得LXC容器从所述源主机迁移至其中并使所述LXC容器恢复运行;在所述LXC容器保持运行的情况下,将所述LXC容器的内存页面预拷贝迭代并将预拷贝迭代后的内存页面通过所述网络传输至所述目的主机,并将预拷贝迭代最后一轮操作留下的内存页面以及所述LXC容器的CPU状况信息同步至所述目的主机并进行停机处理以实现冷冻处理;将所述LXC容器恢复运行的内存页面从所述源主机传输至所述目的主机并保存在镜像文件中,所述目的主机创建一个新容器,并将保存在所述镜像文件中的内存页面填充至所述新容器中并运行。3.如权利要求2所述的基于内存压缩传输的有状态服务容器热迁移方法,其特征在于,所述“预拷贝迭代”具体操作为:预先设置一个阈值,并对所述LXC容器的内存页面进行预拷贝迭代操作,直至所述内存页面的数量值小于或等于所设定的阈值。4.如权利要求3所述的基于内存压缩传输的有状态服务容器热迁移方法,其特征在于,所述“预拷贝迭代”还包括:在对所述LXC容器的内存页面进行预拷贝迭代操作的同时,对预拷贝迭代操作进行内存页面的传输优化。5.如权利要求4所述的基于内存压缩传输的有状态服务容器热迁移方法,其特征在于,所述“优化”具体操作为:将当前的LXC容器的内存页面全部传输至所述目的主机;在传输所述内存页面之前,计算自上一轮内存页面传输之后,页面的脏化...

【专利技术属性】
技术研发人员:李新明刘斌
申请(专利权)人:中科边缘智慧信息科技苏州有限公司
类型:发明
国别省市:江苏,32

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

1