微软交流社区

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 76|回复: 1

天翼云Libcareplus C++热补丁:缩短补丁实施周期,增加IT ...

[复制链接]

3

主题

5

帖子

11

积分

新手上路

Rank: 1

积分
11
发表于 2022-12-7 21:25:49 | 显示全部楼层 |阅读模式
2022年,天翼云携手欧拉社区共同研发了基于Libcareplus工具的qemu热补丁功能,该功能使主机分批串行升级转变为并行同步升级,支撑现网补丁实施周期由月缩减到周,极大地缩短了补丁的实施周期,不断增加IT系统的可用性。
热补丁技术

什么是热补丁技术?这要从程序运行说起,当运行的程序存在漏洞时,一般可通过三种方法解决。
一是替换最新的包含修复补丁的OS版本,在有主备倒换能力的组网环境上,可以先将当前运行的程序迁移到备区,待主区升级完后,再将程序迁移到主区。
二是替换程序的rpm包,然后重新运行程序,对于具备热替换能力的程序,则可以利用热替换能力,实现程序运行内容的替换。
三是直接给运行的程序内容打补丁,替换有问题的代码,实现程序漏洞的修复。

从补丁粒度上来说,上述技术漏洞修复粒度是从大到小变化的:
第一个是系统级的,主要涉及的技术有热迁移技术;
第二个是rpm包级的,主要涉及的技术有热替换;
第三个是运行程序级的,主要涉及的技术有热补丁。
从业务中断时长来看,上述技术的业务中断时长也是从大到小变化的:
第一种技术业务中断时间一般在分钟级,且一般涉及整个系统业务的主备倒换,升级周期最长,一般需要几个月的升级窗口。
第二种技术业务中断时间一般在百毫秒级,且该技术一般不通用,需要侵入式修改和适配大量业务代码,升级周期相对比较短,一般仅需要一个月的升级窗口。
第三种技术业务中断时间则一般在毫秒级,该技术比较通用,不需要侵入式修改和适配业务代码,仅需要适配一些通用代码,适配工作量较小,升级周期相对比较短,一般仅需要一个月的升级窗口。

通过三种方式的对比可以看到,热补丁技术拥有较为凸显的优势:
一是热补丁能够在不影响现网业务的情况下,完成程序漏洞的修复;
二是热补丁适用于需要快速响应的市场环境,将验证工作从版本验证简化为补丁验证。
总结来说,热补丁短小精悍,适合使用在需要快速响应的场景中。
作为热补丁技术中的当红炸子鸡,libcareplus热补丁技术是基于上游社区libcare独立发展的分支,当前由openEuler社区进行自主孵化。
开展社区合作,推动关键技术联合创新

天翼云基础架构技术团队与欧拉社区合作打造了全面支持aarch64及x86平台的libcareplus热补丁功能,可以应用于CVE漏洞修复,也可应用于不中断应用服务的紧急bug修复。此次合研过程中,天翼云基础架构技术团队针对全局变量、局部静态变量等热补丁功能缺失的痛点进行了深度研发。
以往,增加全局变量补丁会导致目标进程崩溃,开发者只能采用分配内存等方式规避问题,经优化后的平台补丁代码具有易修改和易维护等特性。同时,这些功能成功适配多个主流qemu版本,大大提高了libcareplus热补丁工具的适用性,具备大规模批量应用基础。
在业务场景实际应用过程中,天翼云发现libcareplus在处理g++高版本生成的汇编文件时,在汇编文件比对和生成环节代码块结构划分异常,进而导致生成的汇编文件无法被as汇编器正确解析。
对此,天翼云联合欧拉社区针对该场景进行优化创新,基于欧拉社区libcareplus 扩展增加支持g++8特性,实现libcareplus支持C++软件热补丁制作及管理能力,目前特性源码及单元测试用例已贡献到欧拉社区,并在欧拉社区虚拟化SIG组进行技术分享,同时相关特性已被欧拉社区收录至22.03 LTS发行版。
热补丁工具普适性提升,应用场景更广泛
在中国电信天翼云基础架构技术团队与欧拉社区共同优化后,libcareplus热补丁工具的应用范围得到了极大扩展,可运用在以下场景。

  • 为单函数修改制作单个补丁



  • 为多个函数修改制作多个补丁



  • 新增函数



  • 新增全局变量



  • TLS变量



  • 冷热块重排


共建开源生态,加速联创技术落地应用

为解决线上部分qemu crash导致的云主机重启问题,天翼云弹性存储技术团队深入代码分析,发现原生librbd存在严重的代码bug。通常情况下该问题可通过重启云主机冷补丁方式进行修复。
为了保证客户云上业务连续不中断,提供更高的云存储可用性,天翼云团队通过代码分析,基于libcareplus热补丁技术,并对librbd进行深度改造,从而满足客户需求。
天翼云弹性存储技术团队通过不断反复验证和实验,运用qemu内存加载技术并通过librbd程序来修改bug的方式做到了“为飞行中的飞机更换发动机”。
在此期间,天翼云基于libcareplus C++热补丁技术,让librbd热补丁代码在不换行、不新增接口的情况下,通过代码数据结构,以“计算变量在内存中地址偏移”的方式对代码进行了修复,最终在内存中更新librbd补丁,实现了不重启虚拟机即打好librbd热补丁。
天翼云弹性存储技术团队的热补丁技术已实现不用重启云主机就能修复bug,在保证客户云上业务连续性的同时也大大缩短了运维时间。同时,该项热补丁技术也成为欧拉社区第一个C++热补丁,目前已在南宁、昌吉、兰州等资源池上线,部署在超10万个云主机上,覆盖了金融、医疗、政企等众多行业客户。

未来,天翼云将与欧拉社区持续合作,开展更多联合创新:
● 在提升云主机资源利用效率方面,开展虚拟机高低优先级混部、容器在线离线混部创新;
●  在可信云主机方面,开展机密计算创新;
●  在DPU卸载上,开展分布式存储卸载、容器网络卸载创新;
● 在云原生全栈方面,开展安全容器、KubeEdge 边云协同创新。
通过技术创新,天翼云将构筑坚实数字底座,打造可信天翼云,持续践行“云改数转”战略。
回复

使用道具 举报

2

主题

3

帖子

7

积分

新手上路

Rank: 1

积分
7
发表于 2022-12-7 21:25:55 | 显示全部楼层
[强推]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|微软交流社区

GMT+8, 2025-1-10 03:41 , Processed in 0.074918 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表