论文部分内容阅读
随着云计算技术的飞速发展,虚拟化技术所具备的隔离性、简易性和硬件独立等特性,使得其逐渐成为云平台提供服务的根本。云计算技术采用将软硬件资源进行整合,以虚拟环境和裸机环境两种方式为用户提供对象存储、容量型、性能型等存储和计算功能,但随着用户需求的提高,虚拟化环境逐渐代替裸机环境。目前虚拟化技术主要分为虚拟机和容器两大类,云服务提供商利用这两类技术将云中资源(CPU、内存、网络和读写功能等)进行虚拟化。为了给用户提供稳定的服务并降低服务能耗,云服务提供商不仅需要保证云计算环境下的资源管理具备低开销和高扩展等特性,还需要提供服务器的负载均衡和错误容忍等功能。其中动态迁移(Live Migration)不仅是实现云平台服务高效和稳定的重要保障技术之一,也有利于解决服务器之间的负载均衡和错误容忍等问题。容器化虚拟机技术在操作系统内部属于一个完全隔离的进程组,与传统虚拟机最大的区别就是具备极低的管理开销。传统虚拟机提供所有独立得资源,并通过虚拟机管理程序进行资源的管理,由此带来的开销较高。而容器通过直接调用操作系统内核来实现对资源的管理和分配,在资源管理开销方面远低于传统虚拟机,从能耗、隔离和实用等多方面考虑,容器逐渐成为越来越多用户和云服务提供商的选择。Docker容器是目前诸多容器技术中最主流的技术之一,它是一款开源且轻量级容器引擎项目,最大的特点是管理开销低且部署简易。然而Docker官方目前不支持容器的动态迁移,且业界对容器的动态迁移研究较少。本文综合考虑到云中资源和Docker本身的特性,利用预存技术、Pre-copy算法和容器C/R操作来设计并实现了基于云平台的乱序并行Docker容器动态迁移架构,使得Docker容器技术在云平台中更具备完善的服务功能。通过实验数据表明:本文提出的动态迁移架构相比于传统容器和虚拟机的动态迁移在不同场景的应用环境下更具备迁移收敛快、数据传输量少和服务降级率低等特点。本文主要贡献如下:1)本文在设计了一种基于乱序并行的Docker容器动态迁移算法,分别采用云预存储管理器、Pre-copy算法和检查点恢复操作(checkpoint/restore,简称C/R)等技术,以此来充分利用云平台的网络和硬件资源,减少停机时间,降低动态迁移阶段源主机的传输量,实现Docker动态迁移的低开销和实用性。2)实现了基于预存技术的和容器C/R操作的Docker容器动态迁移乱序并行传输架构。为了进一步降低源主机中的数据组件和充分利用云平台资源等特点,本文在实现Docker容器动态迁移的基础上,采用动态调控和预存防积的预存技术。针对用户在云平台中运行的不同类型应用程序,可以根据需求来设定预存阶段额阈值大小。传统的容器技术可以利用裸机C/R操作来获取容器内部应用的内存页面来实现动态迁移,但由于Docker守护进程功能的特殊性,裸机的C/R操作会导致Docker守护进程无法感应容器的变化,从而在停机阶段无法成功恢复。最终本文利用Docker容器的Llibcontainer库来直接调用Linux内核中的CRIU功能,保证守护进程全程参与整个迁移过程。3)设计并实现了一种基于数据传输的优化方案。分别对动态迁移的性能指标进行分析,结合Downtime、TMT和TDT三者之间的平衡关系。最终采用实时性脏页阈值和设置限定循环相结合的方式来优化Docker动态迁移的性能。