天翼云为欧拉社区贡献首个 C++ 热补丁 加速推进联创技术落地应用
天翼云与欧拉社区开展关键技术联合创新 热补丁实现主机崩溃在线修复
天翼云与欧拉社区共研支持 aarch64 及 x86 平台 libcareplus 热补丁功能
近日,中国电信天翼云基础架构技术团队与 openEuler 社区合作共研了全面支持 aarch64 及 x86 平台的 libcareplus 热补丁功能,并为欧拉社区贡献首个 C++热补丁,实现主机崩溃在线修复。这是天翼云与欧拉社区联合开展关键技术创新取得的又一成果。
之前双方已成功研发了基于 Libcareplus 工具的 Qemu 热补丁功能。据天翼云科技有限公司副总经理兼首席技术官广小明在今年 4 月欧拉大会上介绍,Qemu 热补丁功能使主机分批串行升级转变为并行同步升级,支撑现网补丁实施周期由月缩减到周,极大缩短了补丁的实施周期。
目前,新研热补丁工具普适性已得到极大提升,应用场景更广泛。而作为落地应用之一,天翼云为欧拉社区贡献的首个 C++热补丁实现了云主机不用重启修复 bug 的能力,保障客户业务不中断,真正做到“为飞行中的飞机更换发动机”。
热补丁技术能够在不影响现网业务的情况下完成程序修复、适用于需要快速响应的场景,可谓是短小精悍。其中 libcareplus 热补丁技术更是集万千宠爱于一身。
据了解,ibcareplus 热补丁技术是基于上游社区 libcare 独立发展的分支,由 openEuler 社区进行自主孵化,主要包括热补丁制作、补丁管理和补丁加/卸载等。相比于上游社区的 libcare,libcareplus 作为一个用户态进程热补丁框架,可以在不重启进程的情况下,支持对 x86 和 aarch64 架构中 Linux 系统上运行的目标进程进行热补丁操作。同时,libcareplus 全面支持 openEuler Qemu 组件,支持函数级过滤、增量补丁、以及补丁文件解析等。
此次天翼云联合欧拉社区打造的 libcareplus 热补丁功能,可以应用于 CVE 漏洞修复,也可应用于不中断应用服务的紧急 bug 修复。
而且在合作研发过程中,天翼云基础架构技术团队还针对全局变量、局部静态变量等热补丁功能缺失的痛点进行深度研发。以前增加全局变量补丁会导致目标进程崩溃,只能采用分配内存等方式规避,经优化后增强了补丁代码的易修改和易维护性。这些功能成功适配多个主流 Qemu 版本,大大提高了 libcareplus 热补丁工具的适用性,为大规模批量应用奠定了坚实的基础。
同时在实际业务应用场景中,天翼云发现 libcareplus 在处理 g++高版本生成的汇编文件时,在汇编文件比对和生成过程中,代码块结构划分异常,进而导致生成的汇编文件无法被 as 汇编器正确解析。天翼云联合欧拉社区针对该场景进行优化创新,基于欧拉社区 libcareplus 扩展增加支持 g++8 特性,实现 libcareplus 支持 C++软件热补丁制作及管理能力。
目前,该特性源码及单元测试用例已贡献到欧拉社区,并在欧拉社区虚拟化 SIG 组进行技术分享,相关特性已被欧拉社区收录至 22.03 LTS 发行版。
新研热补丁工具普适性增强,应用场景更加广泛
经过天翼云基础架构技术团队与 openEuler 社区共同优化后,libcareplus 热补丁工具的应用场景得到了极大的扩展。
1.为单函数修改制作单个补丁
2.为多个函数修改制作多个补丁
3.新增函数
4.新增全局变量
5.TLS 变量
6.冷热块重排
加速联创技术落地天翼云为欧拉社区贡献首个 C++热补丁
对很多用户来说,最怕在业务办理过程中突然中断、等待修机,但这种现象却不时发生。当欧拉系统下的云主机出现 Qemu 崩溃时,通常情况下该问题可以通过重启云主机冷补丁方式进行修复,但会带来客户业务出现短暂的中断。
为了解决线上部分 Qemu crash 导致云主机重启问题,中国电信天翼云弹性存储技术团队深入代码分析,发现原生 librbd 存在严重的代码 bug。为了保证客户云上业务连续不中断,提供更高的云存储可用性,中国电信天翼云弹性存储技术团队通过不断反复验证和实验,利用 libcareplus C++热补丁技术,librbd 热补丁代码在不进行换行、不新增接口的情况下,通过代码数据结构,计算变量在内存中的地址偏移的方式对代码进行修复,最终在内存中更新 librbd 补丁,实现不需重启虚拟机打 librbd 热补丁能力,即云主机不用重启也能修复 bug 的能力,既保障客户云上业务连续性又大大缩短运维时间,真正做到了“为飞行中的飞机更换发动机”。
目前,该项热补丁技术成为了欧拉社区第一个 C++热补丁,已在南宁、昌吉、兰州等资源池正式上线,部署超过 10 万台云主机,覆盖金融、医疗、政企等众多行业客户。
未来,天翼云将与欧拉开源社区持续合作,开展更多联合创新,包括在提升云主机资源利用效率方面,开展虚拟机高低优先级混部、容器在线离线混部创新;在可信云主机方面,开展机密计算创新;在 DPU 卸载上,开展分布式存储卸载、容器网络卸载创新;在云原生全栈方面,开展安全容器、KubeEdge 边云协同创新等。
版权声明: 本文为 InfoQ 作者【天翼云开发者社区】的原创文章。
原文链接:【http://xie.infoq.cn/article/118bc353357d85477e1d59bd8】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论