这波无感升级有点秀——天翼云QEMU组件热升级方案来了

天翼云开发者社区
• 阅读 693

虚拟化技术作为云计算时代的核心技术,近年来应用越来越广泛。目前,大多数云厂商提供的云主机都是基于KVM/QEMU虚拟化技术实现的。而随着虚拟化技术的发展,QEMU组件也在不断引入新功能并进行功能优化和问题修复。

在公有云场景中,如何在不影响存量虚拟机业务的情况下快速解决资源池中QEMU组件的BUG或升级QEMU版本,是云厂商不得不面对的问题。

这波无感升级有点秀——天翼云QEMU组件热升级方案来了

目前,业界通常采用的解决方式有两种:

▍通过热补丁方式在线修复QEMU BUG; ▍使用热迁移技术将虚拟机迁移到安装了新版本QEMU的宿主机上。

这两种方式都因底层技术特点导致实施起来难度很大,且对运维团队和云管系统要求更高。

为解决上述问题,天翼云弹性计算虚拟化团队在深入研究了现有虚拟化技术和实际业务场景后,打造了QEMU热升级方案,可以快速地在线升级QEMU组件,实现在线修复BUG和升级业务版本。基于该方案云管系统或管理工具可以非常方便地实现一键升级云主机功能,极大提高整个宿主机上云主机的升级效率。

技术路线

热补丁技术

热补丁技术通常用来在线修复用户态程序中和安全相关的严重BUG。对于QEMU组件,一般使用libcare工具制作热补丁,然后再将热补丁应用在虚拟机的QEMU进程中,以达到在线修复BUG的目的。

但是,热补丁技术只对特别简单的BUG有效,对于涉及代码改动较多的BUG,可能无法通过libcare制作出热补丁,即便制作出热补丁后也可能无法成功打上。此外,不同BUG的热补丁及其针对不同QEMU版本的维护,将随着资源池规模的变大以及BUG数量的增多,变得越来越困难,维护成本也越来越高。

热迁移技术

对于需要升级QEMU版本的场景,通常可以使用虚拟机热迁移技术将所有虚拟机从原来的宿主机在线迁移到升级后的宿主机上。由于虚拟机在迁移过程中仍然正常运行,使用这种方式升级QEMU对于一般用户来说基本上没影响,实现用户业务无感知,因此被很多云厂商采纳使用。

不过,由于是跨主机迁移虚拟机,如果虚拟机内存规格比较大或涉及内存密集型业务,那么迁移一个虚拟机的时间也会比较长。而升级资源池中的QEMU版本需要迁移所有虚拟机,可想而知,整个升级周期将持续很长时间,甚至以月为单位。

不仅如此,虚拟机迁移过程将占用大量的网络资源,迁移期间可能对宿主机和虚拟机的网络业务造成较大影响。最后迁移资源池所有虚拟机需要进行资源的统一调度和管理,这对资源调度系统提出了更高要求。

QEMU热升级方案

在介绍QEMU热升级方案之前,一起先了解一下虚拟机热迁移技术背后的原理。

迁移虚拟机时,首先需要使用与源虚拟机相同配置的命令行参数,在目的宿主机上启动一个目的虚拟机进程。然后,再通过多次迭代的形式,将源虚拟机的内存数据通过网络迁移到目的虚拟机的内存中。当剩余内存脏页总量足够小时,立即暂停虚拟机,并将剩余内存以及设备状态数据一次性迁移到目的虚拟机中。最后运行目的虚拟机,同时删除源虚拟机。

从热迁移技术原理可以看出,只要将源虚拟机的内存和设备状态数据迁移到目的虚拟机中,就能保证目的虚拟机和源虚拟机状态一致,而目的虚拟机进程运行在哪个宿主机上并不重要了。

基于热迁移技术原理,QEMU热升级方案通过在相同宿主机上创建一个使用新版QEMU二进制文件启动的目的虚拟机来替换源虚拟机,达到升级QEMU版本的目的。和热迁移不一样的是,新创建的目的虚拟机共享源虚拟机的内存,不再需要迁移,只需在替换前将源虚拟机的设备状态迁移到目的虚拟机中即可。QEMU热升级整体方案流程如图所示。

这波无感升级有点秀——天翼云QEMU组件热升级方案来了

虚拟机内存共享

在QEMU热升级方案中,如何让同一个宿主机上的两个虚拟机进程间共享同一份虚拟机内存成为关键。在此过程中,天翼云基于memfd机制实现了虚拟机内存的分配。memfd机制在Linux 3.17版引入,其提供的memfd_create()接口可以创建一个匿名的文件描述符,且其引用的文件保存在内存中,然后通过ftruncate()系统调用可以分配指定大小的匿名内存。

该方案修改了QEMU进程启动时为虚拟机分配内存的方式,使用memfd机制为虚拟机分配内存,并保存对应的memfd,然后在热升级时将其共享给目的虚拟机进程。

除此之外,为了方便将memfd共享给目的进程以及减少代码的修改,该方案通过源虚拟机进程来创建目的虚拟机进程。基于父子进程共享资源的方式,memfd很自然地就共享给了目的虚拟机进程。目的虚拟机进程启动时不再给虚拟机重新创建内存,而是直接共享使用memfd对应的源虚拟机内存。

设备状态迁移

和共享内存一样,创建目的虚拟机进程前,天翼云将源虚拟机的设备状态保存在另一个memfd关联的内存中,并将对应的memfd共享给目的虚拟机进程。目的虚拟机初始化后,通过读取对应内存中数据即可恢复设备状态。

QEMU热升级方案的优势

升级时间短,占用网络资源少,业务无感知

新创建的目的虚拟机共享源虚拟机的内存,不再需要迁移,只需要在替换前将源虚拟机的设备状态迁移到目的虚拟机中即可。由于设备状态对应的数据量很小,迁移很快,因此虚拟机在热升级过程中的虚拟机暂停时间很短。

天翼云对比测试了同样场景下热升级和热迁移过程中整体耗时以及虚拟机网络中断时间。从测试结果看,热升级虚拟机的整个过程耗时1s左右,网络中断时间大约为100ms;而热迁移的整个过程耗时100s~400s,网络中断时间为300ms。测试结果表明,相比热迁移,热升级的整体耗时减少了99%,网络中断时间减少了67%左右。

支持失败回滚功能,不影响虚拟机业务

QEMU热升级方案支持失败回滚,当升级失败后,可以立即恢复源虚拟机运行,不会影响虚拟机内部业务。由于该方案创建了一个目的虚拟机进程用来替换源虚拟机进程,在升级成功前,源虚拟机只是暂停执行,其所有状态仍然保持原样,因此即便热升级失败后,源虚拟机也可以立即恢复运行。

虚拟机对外接口保持一致,对管理系统透明

虚拟机热升级对上层管理系统(如OpenStack)透明,升级前后虚拟机对外提供的接口不变, 如vnc端口、console等。天翼云在QEMU代码层面做了修改,支持服务端口号、fd等资源的共享,升级后目的虚拟机直接共享源虚拟机拥有的资源,继续对外提供服务。

网卡设备后端资源共享,无需重新配置网络端口

通常虚拟机在迁移到另外一个宿主机后都需要网络控制器重新配置网络开端口和下发对应的流表,保证网络正常工作。而QEMU热升级方案却不需要网络控制器的介入,对其透明,这得益于天翼云对QEMU virtio网卡设备的工作机制及代码框架的深入的研究。天翼云在QEMU网卡设备代码层面进行了优化,实现了virtio 网卡设备后端资源共享以及恢复机制,使得目的虚拟机可以共享源虚拟机virtio网卡设备的后端资源。

安全保护机制,让热升级更加安全可靠

针对某些场景下(比如设备配置的socket使用了TLS或websocket选项)QEMU虚拟机无法执行热升级操作的情况,天翼云构建了安全保护机制,通过禁止执行热升级操作,使方案更加安全可靠。在QEMU代码中,天翼云相应地增加了热升级blocker机制,在虚拟机进程启动时,一旦检查到不支持热升级的场景,将设置一个blocker,以告知QEMU热升级接口禁止执行该操作。由于blocker的存在,热升级接口直接报错退出。

一键热升级QEMU 虚拟机,维护简单

在该方案中,QEMU只提供了热升级方案所需的所有原子操作接口,通过封装这些接口,libvirt可以实现一键热升级QEMU虚拟机的功能。

持续优化,共建开源生态

天翼云云主机热升级方案是基于QEMU开源社区版本上的优化和增强,接下来天翼云也将积极推进该方案开源到社区,共建开源生态。同时,天翼云弹性计算虚拟化团队还将持续优化方案,下一步将支持直通设备的热升级。

未来,天翼云将继续坚持科技创新,加大关键核心技术自主攻关,推进国产软硬件产品升级,以安全可信、自主可控的新一代云计算基础设施底座,助推中国数字经济高质量发展。

点赞
收藏
评论区
推荐文章
天翼云新一代V5云主机,Kvm之生,Xen之死!
天翼云发布了新一代V5云主机,基于intel最新发布的Intel®XeonSkylakeV5CPU的物理机及KVM虚拟化提供的全新云主机系列。计算性能较上一代(V4CPUXen虚拟化)提升15%左右,可以更高效的进行单、双精度浮点运算,适用于对计算性能有强需求的各种场景。这里重点要提的是采用了虚拟化平台KVM!曾经的真爱!记得2012年刚到云公
鱼和熊掌可以兼得!天翼云弹性裸金属一招鲜!
在“攻城略地”的全球云计算发展大潮中中国异军突起天翼云作为一支云服务国家队也在不断“武装”自己虚拟化的过程在为用户带来低成本、高灵活性的同时损耗和高性能场景也给用户带来了焦虑作为天翼云4.0革新产物之一“天翼云弹性裸金属服务器” 全新问世它都有哪些奇功妙招能免除用户焦虑帮助企业上云?天翼云为你逐步揭晓答案正式介绍之前,我们先了解什么是裸金属?裸金属服务器是物
公众版与政企版,这两款云电脑我都要!
8月18日,以“自主领先,畅游云端”为主题的天翼云电脑专题讲座在线上召开。天翼云科技有限公司研发二部高级产品经理梁胜蓝作为主讲人,对天翼云电脑不同版本的功能、特点进行了介绍,并分享了天翼云电脑在政企办公、在线教学等不同场景中的应用实践。近年来,随着5G、云计算等新兴技术快速发展,数字化办公正在成为企业办公的一大趋势。天翼云电脑具有便捷易用、安全可信等优势,可
云虚拟主机和云服务器的区别以及优劣势分析
基于云计算技术的云虚拟主机、云服务器竞争也越来越大。云技术的不断发展,云虚拟主机、云服务器使用成为主流,但是如何根据自身预算及满足自身发展需求进行选择。那么怎么选择适合自己的云主机呢?云虚拟主机、云服务器又有什么区别呢?云虚拟主机云虚拟主机是利用云技术把一台服务器划分为多个的“虚拟的主机”,划分出来的虚拟主机具有独立域名(能够独立的搭建网站)和完整的Inte
了解医疗上云门道,尽在“共铸国云 红云行业思想汇”!
近年来,上云用云已成为各行业数字化转型的主旋律。随着技术的不断成熟,云计算技术已在医疗行业得到广泛应用,各地卫健委和卫生医疗机构借助云计算实现运营和服务的数字化、智能化,医疗信息化进程也在不断加速。《“十四五”国家信息化规划》中明确提出,积极探索运用信息化
天翼云GPU云主机:共享信息技术与虚拟机的完美融合
GPU云主机是一种基于云计算技术的虚拟化服务器。它通过虚拟化技术将一台或多台物理服务器资源进行整合,形成一个共享资源池,从而提供弹性的云计算环境。在这个环境下,每个虚拟主机都可以独立运行,拥有自己的操作系统、存储空间和网络资源。与传统的云主机相比,GPU云主机最大的特点在于其配备了高性能的GPU计算卡,使得在进行大规模数据处理和复杂计算时能发挥出更强的计算能力。
云电脑:DPU简介及分析
随着云计算技术的快速发展,云电脑作为一种基于云计算技术的虚拟化电脑,正在逐渐受到广泛关注。然而,云电脑在实现过程中面临着许多挑战,如计算资源的有限性、数据传输的瓶颈等。为了解决这些问题,一种新型的设备——数据处理单元(DataProcessingUnit,DPU)应运而生。本文将从专业的角度对DPU进行详细介绍和分析,包括其定义、功能、优势以及应用前景等方面。
云电脑超详细技术讲解
随着云计算技术的快速发展,云电脑作为一种新型的计算模式,越来越受到人们的关注。云电脑是一种基于云计算技术的虚拟化计算资源,它通过将物理服务器资源进行虚拟化,形成了动态、可扩展的计算资源池。用户可以通过互联网远程访问云电脑,进行各种操作,如办公、设计、开发等。本文将详细讲解云电脑的技术原理和实现过程。
虚拟化技术简介
在计算机科学中,虚拟化技术(Virtualization)是一种资源管理技术,将计算机的各种物理资源予以抽象、转换,然后呈现出来的一个可供分割并任意组合为一个或多个虚拟计算机的配置环境。虚拟化技术是云计算的基础,本文将简介虚拟化技术,同时介绍虚拟化技术在云计算中的重要作用。
天翼云开发者社区
天翼云开发者社区
Lv1
天翼云是中国电信倾力打造的云服务品牌,致力于成为领先的云计算服务提供商。提供云主机、CDN、云电脑、大数据及AI等全线产品和场景化解决方案。
文章
696
粉丝
15
获赞
40