感觉 RHEL 从 5 开始一直用的是 2.6.X 内核,为什么不升级到 Linus 大大所说的目前最好的内核 3.11 ?

为什么Ubuntu Server 就是 3.X 的内核呢?作为生产中的伺服器,如果自行将内核升级至 3.11 会有什么风险吗?兼容性如何?


rhel 每个大版本的 kernel 主版本号是不会变的,但是每次更新都会 backport 很多新内核的 feature,有些是 3.x 的feature了,rh 只选择他们需要的 patch backport 回来

第一个,这是红帽给客户的一种保证,保证了二进位兼容,这个是很难的,很花费人力去测试的

比如内核提供的一些介面,应用程序可以直接调用,要是升级了kernel,又没去保证介面跟以前的一致,是会让应用程序在新的kernel上出错的。红帽是主版本不变化,但红帽的版本跟upstream的是不一样的,如

RHEL5 系列用的 2.6.18,红帽会从upstream backport 驱动程序,(可能)从最新的3.16,也会backport 文件系统的改动,如 ext4 在 2.6.18 upstream是不可用的, kvm 在 2.6.18 是没有的 。

红帽也把它 backport 到自己的 2.6.18 里了。这个 backport 的工作比直接升级 kernel 要难得多了,因为要保证把新东西弄进来,还要保证以前的介面是没有变化的,这样客户已经使用的程序无需改变就能享受新功能。

第二个,请参考 RHEL7,用的也是 3.X(具体是3.10)

第三个,最好不要,除非你的生产服务不是重要的,并且容易从出错中恢复的。 Critical 的生产伺服器稳定最重要了,升级到新版本的风险就是你不知道新版本会带来什么风险。没给出具体应用场景,没人知道你指的是什么方面的兼容性哈。。。是API还是ABI,是指文件系统还是指网路介面还是编译器的版本。

因为RHEL系列的内核自发布之日起在一个主要版本内就只会有bugfix,这是Red Hat的产品政策

Windows其实也是一样的=。=


最好不要,除非你的生产服务不是重要的,并且容易从出错中恢复的。 否则,生产伺服器稳定性最重要了,升级到新版本的风险就是你不知道新版本会带来什么风险


内核主版本升级意味著很多功能的改动,运行机制的改变。大量底层功能的新陈代谢会导致应用的极大变动,比如之前的某些东西都不好使了,因为底层已经改成别的功能实现了,要换新的?那运行库又要换了,然后发现又要换编译器,然后你会发现…kao,这么多都换了,应该叫7.x啦!
redhat有7.x了,6就不用升了呀
再等两年吧,线上机器稳定第一。


centos是会升级内核的,至今centos6的2.6.32内核还在有更新。但centos/redhat保证每个版本内核的大版本都不会变,所以内核不能升级到3.xcentos/redhat还干了一件事,就是把新版本内核的特性移植到旧内核上(通过打补丁),具体例子就是centos6.7的内核能跑docker
centos 6不会升级到3.0的,这是上游redhat决定的,因为redhat目标是让系统稳定。当然,你可以自己编译内核,随便哪个版本;btw,我centos6作桌面用3.内核的,没有问题。


推荐阅读:
相关文章