论文部分内容阅读
在云平台技术飞速发展的环境下,虚拟化技术所具有的隔离性、易部署性以及硬件独立等特性,使其日益成为对外提供平台服务的基础。云计算将软、硬件资源进行整合,通过服务的形式提供给用户,其中虚拟化是关键技术之一。目前主流虚拟化技术主要包括两大类——虚拟机和容器,云平台提供商利用这两种技术将包括CPU、内存、I/O、网络在内的资源进行虚拟化。为了提供更加稳定的服务及降低服务开销,云计算环境下资源管理不仅需要具备低管理开销、高度可扩展性,同时还需提供负载均衡等功能。这些关键特性是保障云平台服务高效、稳定的重要手段。其中,动态迁移(即热迁移,Live Migration)技术是实现资源管理的核心技术之一,同时也是实现云平台负载均衡的重要手段。 容器技术区别于虚拟机技术的重要特征就是其具有很低的管理开销。虚拟机技术提供从CPU到外围I/O全方位硬件资源虚拟化,通过虚拟机管理程序(Hypervisor)进行资源控制,因此其开销也由方方面面的管理开销构成。与虚拟机技术不同的是,容器技术利用Linux内核技术施加访问控制来实现资源虚拟化,降低了上述开销。从执行环境自身开销和隔离性等方面综合考虑,容器技术现在成为越来越多企业选择应用开发与部署的工具。在诸多容器技术中,Docker容器是最主流的技术之一,它源于一个轻量级虚拟化的容器引擎项目,其具备一个突出特点,即易分发管理且管理开销低。然而目前Docker官方暂不支持动态迁移,且业界针对Docker容器动态迁移的研究也比较欠缺。本文主要研究并实现了Docker容器动态迁移框架,针对动态迁移中影响性能的关键因素,设计并实现了相关优化技术提升动态迁移性能,使Docker容器具备更完善的云平台服务功能。实验表明,较成熟的KVM技术相比,优化后的Docker容器动态迁移框架在写密集场景下具有迁移收敛快、传输数据少、服务降级率低等特点。本文主要内容具体如下: 1)本文设计了一种全系统Docker容器动态迁移算法。通过对Docker实现原理和底层技术进行研究,借助进程迁移检查点恢复机制(Checkpoint/Restore,简称C/R),从实现和容错两方面考虑,选择Pre-copy算法进行全系统Docker容器动态迁移算法设计。 2)利用Native C/R实现Docker容器的整体动态迁移。传统的容器技术可以利用CRIU外部调用实现运行时检查点恢复操作,这种External C/R模式可以支持容器进程组的动态迁移。由于Docker容器自身C/S架构特性,上述方案迁移成功后守护进程无法感知容器状态变化,不便于后续管理监控。本文通过修改Docker源码增加支持Pre-copy的Docker C/R API,底层通过runC调用CRIU来实现相应功能,最终实现Docker容器整体的动态迁移。 3)针对Docker动态迁移中影响性能的关键因素,设计并实现了一系列优化技术,提升动态迁移性能。如采用混合循环终止条件,综合考虑停机时间和总迁移时间来保证Docker容器动态迁移的性能;在磁盘空间受限场景下利用Page-server减少磁盘IO;以及利用动态监测手段判别脏页收敛率进行选择性传输,并结合压缩算法减少数据传输量等。利用混合循环终止条件即避免了迁移无法收敛的情况,又保证了迁移在可接受的时间内完成。实验表明在STREAM测试写密集场景中,不同内存读写速率下Docker容器动态迁移总迁移时间控制在2min内。在低负载实验场景下传输数据量减少66%;在高负载写密集场景下,不仅传输数据显著减少使得停机时间降低56.7%,传输时间也降低了77.4%。在不同内存读写速率和不同线程并发场景下与KVM虚拟机进行对比,实验表明Docker动态迁移框架对应用性能影响较小。