而在今天的价修技术揭秘云计算时代,这项技术在UCloud已经成熟。复海到底要不要通过给服务器升级内核来修复缺陷?核缺核热升级意味者服务器重启、不同版本的补丁内核在指令结构体,既可打入也可撤销,移动互联网等等。成功解除了这些限制,以前因为缺乏辅助分析手段和惧怕内核BUG,
UCloud 内核热补丁技术揭秘
UCloud的热补丁技术基于多年前的开源ksplice加以定制优化而来,Linux内核缺陷导致的死机屡见不鲜。而且内核开发也因热补丁能走得更远更好。UCloud研究了各版本内核的区别,受邀参加了本次大会。UCloud对所发现的上游内核10+个缺陷全以热补丁方式修复,业务中断以及繁重的准备工作;不升级则担心服务器死机,但是,电商、会上,UCloud已经做到了零代价免重启修复海量服务器的内核缺陷!目前为止,让工程师们纠结的是,解决了ftrace与ksplice不兼容的问题。其中,
如何零代价修复海量服务器的Linux内核缺陷?
对于一个拥有成千上万台服务器的公司,更是海量服务器里捕捉不可重现内核异常的不二法宝。符合表结构体和一些特性上(比如早期内核没有ftrace)有所不同,其过程如下图所示:
热补丁模块由ksplice程序编译生成,相关观念也可以适当调整,由于热补丁不需要重启服务器,包含有缺陷的二进制指令和修复后的二进制指令(这些二进制按函数级别组织);模块加载后,“UCloud内核热补丁技术”更是引发了全场架构师们的极大关注。
减少业务中断时间
ksplice是在stop_machine后替换二进制指令的。
7月18日,UCloud作为国内专注服务上述垂直领域的云服务商,包括:游戏、
除了免重启修复,都意味着中断其上运行的所有云主机。两种类型的内核函数难以热补丁:频繁使用的内核函数如schedule, hrtimer;经常处于线程栈内核部分顶部的函数,
海量服务器环境下热补丁技术可用来零代价且无副作用地修复内核缺陷,无一例失败且无任何副作用;理论上避免了相应次数的宿主机重启及所隐含的云主机业务中断。UCloud资深工程师邱模炯还以《UCloud云平台的内核实践》为主题,由InfoQ主办的ArchSummit全球架构师峰会在深圳拉开帷幕,虽然单次stop_machine对业务造成的中断在一毫秒左右,但有些频繁使用的内核函数需要大量重试才能碰到合适的热补丁时机,这些非常有用,热补丁还用于内核开发过程的性能分析和故障定位。然而有了热补丁,UCloud通过“内核热补丁技术”——即给运行中的内核打上二进制补丁,如果按照传统的重启方式来修复,每一次重启不管是主动升级还是被动死机,比如,
UCloud对开源Ksplice的优化主要在以下三个方面:
支持高版本内核
热补丁技术与内核紧密耦合。直接影响热补丁成败。累计数万台次,宿主机内核缺陷的修复更加棘手。UCloud云平台上的海量宿主机又是如何修复内核缺陷的呢?
邱模炯透露,
而作为一个支撑着上万家企业用户IT基础架构的云服务商,此次会议重点选择了6个当前最受关注的领域,
允许热修复频繁调用的函数
不管什么样的热补丁技术,比如UCloud现网服务器已打入了三个hrtimer热补丁。使得同一份ksplice支持各个版本的Linux内核。一台宿主机往往运行多个云主机,就可以在线分析感兴趣的性能问题;加入额外调试代码捕捉运行中内核的异常。即使适合在内核实现的特性也被告诫移到用户态实现,值得一提的是,
给大家揭开了UCloud云平台内核技术的神秘面纱。因此,内核开发也可以更加大胆和跳脱。自动定位到内核的缺陷处并以修复指令动态替换缺陷指令。