为什么说云主机比物理机故障率更低,零代价修复服务器内核缺欠

零代价修复服务器内核缺陷 UCloud内核热补丁技术揭秘

云顶娱乐棋牌游戏 ,7月18日,由InfoQ主办的ArchSummit全球架构师峰会在深圳拉开帷幕,此次会议重点选择了6个当前最受关注的领域,包括:游戏、电商、移动互联网等等。UCloud作为国内专注服务上述垂直领域的云服务商,受邀参加了本次大会。会上,UCloud资深工程师邱模炯还以《UCloud云平台的内核实践》为主题,给大家揭开了UCloud云平台内核技术的神秘面纱。其中,“UCloud内核热补丁技术”更是引发了全场架构师们的极大关注。

如何零代价修复海量服务器的Linux内核缺陷?

对于一个拥有成千上万台服务器的公司,Linux内核缺陷导致的死机屡见不鲜。让工程师们纠结的是,到底要不要通过给服务器升级内核来修复缺陷?升级意味者服务器重启、业务中断以及繁重的准备工作;不升级则担心服务器死机,同样造成业务中断和繁重的善后工作。

而在今天的云计算时代,一台宿主机往往运行多个云主机,每一次重启不管是主动升级还是被动死机,都意味着中断其上运行的所有云主机。因此,宿主机内核缺陷的修复更加棘手。

而作为一个支撑着上万家企业用户IT基础架构的云服务商,UCloud云平台上的海量宿主机又是如何修复内核缺陷的呢?

邱模炯透露,如果按照传统的重启方式来修复,那么无论是对于UCloud或是用户,都意味着繁重的运维和业务中断。但是,UCloud通过“内核热补丁技术”——即给运行中的内核打上二进制补丁,UCloud已经做到了零代价免重启修复海量服务器的内核缺陷!目前为止,UCloud对所发现的上游内核10+个缺陷全以热补丁方式修复,累计数万台次,无一例失败且无任何副作用;理论上避免了相应次数的宿主机重启及所隐含的云主机业务中断。这项技术在UCloud已经成熟。

UCloud 内核热补丁技术揭秘

UCloud的热补丁技术基于多年前的开源ksplice加以定制优化而来,通过加载一个特殊准备的热补丁模块来修复内核。其过程如下图所示:

云顶娱乐棋牌游戏 1

热补丁模块由ksplice程序编译生成,包含有缺陷的二进制指令和修复后的二进制指令(这些二进制按函数级别组织);模块加载后,自动定位到内核的缺陷处并以修复指令动态替换缺陷指令。

除了免重启修复,热补丁还用于内核开发过程的性能分析和故障定位。比如,加上性能统计代码生成热补丁,就可以在线分析感兴趣的性能问题;加入额外调试代码捕捉运行中内核的异常。这些非常有用,更是海量服务器里捕捉不可重现内核异常的不二法宝。由于热补丁不需要重启服务器,既可打入也可撤销,所以不会有副作用。

UCloud对开源Ksplice的优化主要在以下三个方面:

支持高版本内核

热补丁技术与内核紧密耦合。不同版本的内核在指令结构体,符合表结构体和一些特性上(比如早期内核没有ftrace)有所不同,直接影响热补丁成败。UCloud研究了各版本内核的区别,使得同一份ksplice支持各个版本的Linux内核。值得一提的是,解决了ftrace与ksplice不兼容的问题。

允许热修复频繁调用的函数

不管什么样的热补丁技术,两种类型的内核函数难以热补丁:频繁使用的内核函数如schedule,
hrtimer;经常处于线程栈内核部分顶部的函数,如sys_poll,
sys_read。UCloud更改了ksplice相关内核代码和用户态工具,成功解除了这些限制,比如UCloud现网服务器已打入了三个hrtimer热补丁。

减少业务中断时间

ksplice是在stop_machine后替换二进制指令的。虽然单次stop_machine对业务造成的中断在一毫秒左右,但有些频繁使用的内核函数需要大量重试才能碰到合适的热补丁时机,于是会造成最长达上百毫秒的中断。UCloud在此做过一点优化,使得业务中断时间控制在十毫秒级别。

海量服务器环境下热补丁技术可用来零代价且无副作用地修复内核缺陷,而且内核开发也因热补丁能走得更远更好。以前因为缺乏辅助分析手段和惧怕内核BUG,即使适合在内核实现的特性也被告诫移到用户态实现,然而有了热补丁,相关观念也可以适当调整,内核开发也可以更加大胆和跳脱。

UCloud内核热补丁技术揭秘
7月18日,由InfoQ主办的ArchSummit全球架构师峰会在深圳拉开帷幕,此次会议重点选择了...

服务器硬件质量如何提升?

服务器硬件故障率的影响因素有厂商品牌、机型、服务器运行时间、以及部件型号的故障率。

这里的工作需要海量服务器来做,比如上万台才有意义,而几百上千台意义不大。

这里有一张图,体现我们可以主动采取部分措施。

云顶娱乐棋牌游戏 2

为什么说云主机比物理机故障率更低?

本文根据高效运维系列微信群的嘉宾分享整理并发布。「高效运维」公众号作为本系列群的官方唯一公众号,原创并独家首发。OneAPM
授权转发。

2. 免重启热补丁技术

这是指通过二进制指令修改的方式修改 Linux 内核达到修复的目的。

结合自主维护 Linux 内核,如果发现了 BUG
并制作修复补丁后,可以免重启应用到生产环境的 Linux 内核里。

这点目前主流 Linux 厂商不提供。但云平台厂商可以自己做。

观点总结


简要总结一下本文的主要观点:

  1. 云主机相比物理机,虚拟化层和宿主机内核的额外复杂性及故障率可以被优化至接近
    0 即可以忽略。

  2. 服务器硬件故障,云平台可以不断降低其故障率,主要手段通过内核隔离硬件故障、热迁移规避故障隐患,以及监控故障率并主动下架不良厂商机型等。

云顶娱乐棋牌游戏 3

为什么说云主机比物理机故障率更低?

上述这些工作都需要非常专业的运维团队和内核团队才能实施,如果没有足够大的服务器数量是很难开展的。

而大型云厂商往往管理几万、几十万服务器,因此具备这样的条件。也因此,云主机故障率能低于物理机(当然,如果什么都不做,云主机故障率一定是高于物理机的)。

OneAPM
提供前所未有的Servers
监控体验,面向所有人的性能监控,并承诺永久免费。而且能够细分到单个进程的资源消耗,统计性能消耗热点。赶快注册体验一下吧!

1. 自主维护Linux内核

商业 Linux 发行版(如 RHEL6.X)的内核其实有不少
BUG,因为内核太庞大、太复杂,BUG
修之不尽而且不断涌现,只要内核有人在改动,更多的 BUG 就还在路上。

但我们自己维护的 Linux 内核,我们可以迅速修复并应用进实际环境,不像商业
Linux 要等待较长的发布周期。

我们还可以预先研究别人犯过的错误,把更新补丁打入现在的内核;还可以屏蔽不必要的特性和改动避免
BUG 的引入。

简单讲,自主维护内核很灵活,最终质量不低于商业 Linux
发行版。国内有海量服务器的公司如腾讯和阿里都运行自主维护的 Linux 内核。

3. 热迁移技术

特殊情况下的热迁移,可规避尚未完全定位的内核问题。

这三点的综合效果,使得某些云厂商,因为内核原因造成的宕机低到可以忽略。几万台服务器半年可以减少到一两次。

可能有些早期用户应该比较有感觉,几年软件宕机不少,给客户推送的故障报告不时就和内核有关,但经过一年半载的工作后,现在几乎没有了。

编辑

  • 徐凯强@和信-北京(内容收集、发布)

相关文章

Comment ()
评论是一种美德,说点什么吧,否则我会恨你的。。。