透过现象看本质:咱也来聊聊CentOS和红帽 Posted 2021-04-24 Linux技术中坚站
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了透过现象看本质:咱也来聊聊CentOS和红帽相关的知识,希望对你有一定的参考价值。
2020
年年底的时候,开源界发生了一件大事儿,来自全球的 CentOS
用户群情激奋,毫不留情的对当事人进行了毫不留情的笔伐口诛。 Linux
社区就像是滚热的油锅里被撒了一把盐,一时间浓烟滚滚,硝烟弥漫。相信说到这里,搞开源软件的朋友已经知道我说的是什么事情了,这一切都和开源界的重量级人物——红帽公司有关,在 2020
年 12
月 8
日这天,红帽和 CentOS
的官网同时宣布不再对 CentOS
社区进行投入,而相关的投资将转移到 CentOS Stream
项目上。
图一:关于红帽对 CentOS
项目投资重心转移的官宣
为什么这件事让众多的 CentOS
用户无法接受呢?这还得从 CentOS
和红帽的渊源说起。早在 20
多年前,红帽就凭借其 Red Hat Linux
吸引了大批的商业和个人用户,牢牢的占据了 Linux
市场份额第一的大佬地位。之后在 2002
年,出于公司发展的需要,红帽将 Linux
产品的开发重心全面转向了企业用户,停止了 Red Hat Linux
的开发并发布了 Linux
历史上第一个面向企业级市场的 Linux
版本—— Red Hat Advanced Server 2.1
(后续版本改名为 Red Hat Enterprise Linux
简称为 RHEL
)。为了弥补原来 Red Hat Linux
在开源社区的空缺,在 2003
年,红帽发布了 Fedora Core Linux 1
(即后来的 Fedora Linux
),这是一个完全面向开源社区的免费 Linux
发行版。至此, Red Hat Linux
分化为面向企业的收费版本 RHEL
和面向社区的免费版本 Fedora
。
开源软件是人类软件历史上最大的变革之一,它对软件开发的影响力在于极大的激发了人类的创新,让志同道合的人可以为了一个共同的目标,共享自己的想法和观点并将其付诸于实践。但是开源社区是一个任何人都可以参与的大集市,这也就导致了很多开源项目良莠不齐,而且一些在一开始热度很高的开源项目可能随着核心开发者的兴趣转移以及其他原因慢慢的失去维护了。所以开源软件如果要在企业的生产环境中使用就必须要同时解决软件的成熟稳定和生命周期维护的问题。而 Red Hat Linux
分化为 Fedora
和 RHEL
在很大程度上解决了开源软件能顺利的在企业生产环境落地的问题,包括开源软件杂乱无序的野蛮式开发(如何选)和社区项目未来发展的不确定性(谁来服务)等问题。也就是从这个时候红帽开始了自己独有的从社区到到企业的开源软件开发模式。
Fedora
作为 RHEL
的试验田,与开源社区紧密结合并从社区吸收和接纳各种新技术和新特性,每 6
个月发布一个新版本。免费使用、用户自服务。
RHEL
则是根据各个开源项目在 Fedora
中的使用情况和社区反馈,选取其中成熟稳定的功能和版本,基于某一个 Fedora
的发行版本 fork
出来的一个分支,对其做进一步的 QE/QA
、压力测试、和其他商业公司进行软硬件兼容测试、安全认证和加固等等一系列的工作之后发布的面向生产环境的有技术支持和服务的企业级 Linux
发行版本。有长达十年的生命周期,而且在生命周期之内,对于同一个大版本内的小版本,红帽还会不断的 backport
上游社区成熟稳定的补丁(安全更新和功能增强)到 RHEL
中,红帽会保证这个升级是向下 ABI
和 API
兼容的。这意味着用户在 RHEL
的同一个大版本的老版本上开发或者是认证过的应用可以无障碍的在新版本上运行而不需要修改或者重新认证。
所以红帽希望的是 Linux
爱好者、桌面用户和程序员 可以选择 Fedora
来体验开源社区最新的功能和特性,基于 Fedora
来积极参与社区开发并来向 Upstream
社区提交代码。而企业用户可以购买 RHEL
的订阅来在 RHEL
上运行操作系统自带的有红帽支持服务的开源软件、有认证的第三方商业数据库和中间件或者自己开发的应用程序。不仅仅是 Linux
操作系统采用的是这样的开发模式,后续红帽所有的产品都采用了这样的模式进行开发,从而完美的实现了开源软件从社区到企业的华丽转变。
但是很多以前的 Red Hat Linux
的用户不买账了,以前可以免费得到的技术支持,现在要购买订阅后才能得到,习惯了吃免费午餐的人突然吃不到了,这是无法接受的。 CentOS
就是在这个背景下诞生的。
Gregory Kurtzer
创建了
CentOS
项目(全名是
Community
EnterpriseOperating System
)
,
CentOS
项目的目标是在红帽不再提供免费的技术支持和产品后对红帽的重构,基于红帽的源代码对
RHEL
进行翻版,在重新编译的过程中去仅去除了
RHEL
源代码中红帽的
LOGO
、商标或者其他会可能会造成商业纠纷的部分并替换了主题。
由于
RHEL
的知名度以及
CentOS
对自己发行版清晰的定位,所以
CentOS
一经发布就被众多红帽用户追捧。
CentOS
是一个完全非盈利性质的开源项目,而开源软件诞生的初衷之一是让那些用不起昂贵商业软件的人可以用上免费或者廉价的替代品,所以试想一下,有多少捉襟见肘的实验室和研究机构、入不敷出的初创公司、预算紧张的中小企业可以拒绝这样的免费大餐?因此
CentOS
很快成了
X86
服务器上非付费
Linux
发行版装机量名义上的
No.1
,虽然没有找到确切的统计数据,但是我觉得说
CentOS
是非付费
Linux
发行版装机量第一一点也不过分。
CentOS
在最终用户心里的地位一点不次于红帽在开源社区的地位,它同样拥有无数铁粉。我不得不说它太成功了,以至于很多
Linux
发行版基于
CentOS
来定制属于自己的发行版本,这样可以避免直接使用红帽的源代码可能会带来的商业纠纷又能最大程度的继承
RHEL
的稳定性。
对于
CentOS
的兴起,红帽在大多数情况下都是听之任之,毕竟
CentOS
毫不避讳自己就是
RHEL
的复刻,所以它的成功其实也是在给红帽做市场宣传,它从另外一个角度证明了红帽的
RHEL
是成功的。此外,还是会有一些用户会因为生产需要将会部分
CentOS
切换到
RHEL
,红帽多少也能从中获益。
在 2014
年, CentOS
宣布加入红帽,红帽出资对 CentOS
项目进行赞助,出人直接参与 CentOS
项目的开发,并占据了 CentOS
社区当时 9
个常任董事中 3
个名额。
CentOS
加入红帽后完善了红帽的整个开源生态系统,最大的好处就是红帽所有产品对应的社区发行版本有一个比 Fedora
更理想的体验和开发平台,形成了完整的有一一对应关系的企业开源产品和社区开源产品。
CentOS
成功说到底是因为 RHEL
的成功,说到 RHEL
的成功,我们必须要提一下红帽一直坚持的 UpstreamFirst
的原则。了解了这个对于帮助大家理解以下几个问题:
那么多人和企业参与开源的,为什么在开源软件企业化的市场上貌似只有红帽风生水起?
红帽为什么要把投资从 CentOS
切换到 CentOS Stream
?
Upstream
(上游)和 Downstream
(下游)这两个单词都是源自河流,意思是离源头近或者远,也有相对的意思,在河流的任意两点之间,相对源头较近的称之为上游,反之为下游。对于开源社区来说,上游通常指的是各类开源项目,比如 Linux kernel
、 Apache
、 k8s
等等,下游指的是某个开发者或者组织 fork
了上游的一个代码,形成了自己的分支自行进行维护,也就是相对于原有的开源项目说形成了自己的所谓产品。
例如,相对于 Linux kernel
社区 Linux
社区是 Fedora
的上游,相对于 RHEL
, Fedora
是 RHEL
的上游。而 CentOS
是基于 RHEL
的源代码重新编译后翻版的,因此它是 RHEL
的下游。
坚持上游优先背后的含义在于永远紧跟社区的发展步伐,在自己的开源产品中只放开源上游社区接纳的功能和特性,不放任何自己独有的东西,从而避免形成一个完全独立的分支和不断 merge
自己补丁的窘境,避免走入死胡同和降低维护难度和成本。
现实中有不少案例证实了不坚持上游优先带来的后果,比如 Ctrix
,其一度非常有名的虚拟化技术 Xen
,由于体系结构的限制, Xen
为了在 X86
架构上实现 Linux
系统的虚拟化,只能去修改 Linux
内核,所以从诞生到现在, Xen
一直维护着一套自己的 Linux
内核版本,上游 Linux
内核社区的新特性和功能,它也需要费一番功夫才能移植进来,可想而知维护成本有多高,并且对 Xen
的发展速度会有多大的制约和阻碍。
而相比较另外一个开源的 Linux
虚拟化技术 kvm
,因为其是合并在 Linux
内核项目之中的,是 Linux
内核的标配,所以维护起来非常的容易,因此 kvm
在这种情况下后来者居上,很快就超越了 Xen
成为了开源社区虚拟化的主力,目前主流的开源虚拟化、云计算软件以及公有云平台几乎都是基于 KVM
来构建的。 AWS
和 Oracle
在最开始的时候在自己的云和虚拟化产品中都采用的是 Xen
技术,而现在都已经回归了主线开始拥抱 KVM
。这就是上游优先的力量,保证你可以永远站在巨人的肩膀上立于不败之地。
坚持上游优先是红帽致胜的大招。总得说来体现在两个方面:
紧随上游,不在自己产品中放任何没有被 Upstream
接纳的代码。在上游社区的代码的基础上做减法,筛选出对企业用户有价值的、成熟稳定的代码用来构建自己的发行版。
引导上游,红帽在开源社区的话语权是非常重的,几乎所有流行的开源项目都能看到红帽开发人员的身影,依靠公司多年的沉淀来指引社区的发展方向。
所以,明白了这点大家再去对比其他做开源的公司,孰优孰劣就一目了然了。无论国内外,有哪家公司能在完全开源的基础上做到上游优先,又有哪家公司有红帽参与开源社区的广度、深度以及领导力的?貌似找不出第二家了。
我们再回头看看红帽把投资从 CentOS
转移到 CentOS Stream
这个话题,网上流传的 IBM
阴谋论以及红帽背叛开源论,这些我个人觉得都不靠谱,看待这个这个问题我觉得只需要抓住一点——那就是和红帽的上游优先的政策。
上下游在开源社区里还可以理解为开发端和用户端,当然同样是一个相对的概念。在红帽以前的开发体系中,如果第三方想参与 RHEL
的开发过程是比较困难的,因为红帽的开发团队只有在参与 Linux
社区和 Fedora
项目的工作才是开放的,允许第三方提交代码,而 RHEL
的开发工作是在红帽内部进行的,这一现象从 RHEL
发布之日起一直持续到现在。
你也不太可能通过参加 CentOS
的项目来向红帽提交代码,虽然 CentOS
也是开源社区的一个项目,但是不像 Fedora
, Fedora
是双向社区,既有使用方也有代码贡献者, CentOS
更主要的是一个使用者社区,它为 CentOS
社区贡献一个免费的“ RHEL
重制版”给众多的用户。此外,因为 CentOS
是 RHEL
的下游,通过 CentOS
项目向 RHEL
提交源码就像你想让江水逆流而上一样不现实。
所以在整个红帽的 RHEL
开发模型里缺少了很重要的一环,作为标榜所有代码都是开放的红帽,其旗舰产品 RHEL
的开发过程居然是封闭的,这让红帽情何以堪。
而 CentOS Stream
是什么?红帽给 CentOS
的定位介于 Fedora
和 RHEL
之间的开发平台,它将以 RHEL
上游的身份来解决合作伙伴、社区用户和其他开发者在之前无法参与 RHEL
的开发过程的问题。旨在提高 RHEL
开发过程的透明度和协作性,它出现的目的是为了完善红帽 RHEL
的生态和加速创新。所以给 CentOS
换个身份,问题就完美解决了。
图三、Fedroa
、 RHEL
和 CentOS
上下游关系
图四、Fedroa
、 CentOS Stream
和 RHEL
的上下游关系
上面两张图很直观的说明了 Fedora
、 RHEL
、 CentOS
以及 CentOS Stream
之间的上下游关系。有了 CentOS Stream
,红帽把以前处于完全封闭的 RHEL
的开发环境完全开放给了公众,任何人人都可以以向 CentOS Stream
贡献代码的方式来参与 RHEL
的早期开发工作,这对红帽和最终用来来说都是非常有利的。
在官宣了未来的工作重心迁移到 CentOS Stream
的同时,红帽也对目前的 CentOS
的生命周期作了清晰的定义:
CentOS 6
生命周期结束时间为 2020
年 11
月 30
日
CentOS 7
生命结束时间 2024
年 6
月 30
日
CentOS 8
生命结束时间 2021
年 12
月 31
日
所有已发布版本的生命周期结束后, CentOS
项目将全面终止,已有的 CentOS
用户可以通过简单的两条命令将现有的 CentOS
切换到 CentOS Stream
,详见: https://www.centos.org/centos-stream/
对于以前的 CentOS
用户而言,红帽此举措带来的影响是非常之大的,要知、道 CentOS
之前功成名就的原因就是它是基于红帽企业 Linux
源码重新编译的版本,仅仅是去掉了 LOGO
和 Trademark
等红帽公司有版权的内容并将桌面调色和主题进行更换而已。它会紧随红帽的发布节奏更新和发布自己的版本,其作为 RHEL
的下游,在很大程度上是可以继承 RHEL
的成熟度、稳定性、安全性和可靠性的。然而 CentOS Stream
替换了 CentOS
之后,整个 CentOS Stream
的角色和定位发生了变化,它将作为 RHEL
的上游,即开发版本来完善 RHEL
的生态和加速其创新,它和 RHEL
的关系简单说来包含以下几方面内容:
其定位为 RHEL
的开发版本,即它现在是 RHEL
的上游
CentOS Stream
处于 Fedora Project
和 RHEL
之间,提供一个有新特性的 RHEL
内核以及新特性的 “
滚动预览 ”
( rolling preview
),也就是说 CentOS Stream
并没有 8.0\8.1\8.2
等版本,只有 “
最新版 ”
滚动的另外一个含义是 CentOS Stream
中的补丁是实时发布的,不像在 RHEL
里那样经过严格的测试和认证之后才会发布。
CentOS Stream
提供的包普遍要比 RHEL
版本更 “
新 ”
, RHEL
会基于 CentOS Stream
来做减法,选择其中成熟稳定的功能。言外之意, CentOS Stream
里的软件组件的稳定性和成熟度要逊色于 RHEL
。
综合上面所描述的,其实大家心里已经很明确了一个事实,那就是 CentOS Stream
是不太适合运行在生产环境上的,因为它诞生的目的是让更多的社区开发者和合作伙伴尽早的参与 RHEL
的开发和完善 RHEL
的生态。
首先,切换到 CentOS Stream
而言对于大多数人来说都是不现实的,也不是首选;因为前面我们已经说过了, CentOS
定位就是 RHEL
的开发版本。
其次,因为 CentOS
的版本维护终止是有明确的时间安排的,因此,在没有合适的可替换的发行版本之前,暂时继续停留在 CentOS
发行版上,持续观望可能是比较明智的选择;然后从长远看,大量的 CentOS
用户是必须要找一个替代品的。
在红帽宣布将工作重心迁移到 CentOS Stream
之后, CentOS
联合创始人 Gregory Kurtzer
成立了初创公司 Ctrl IQ
, Kurtzer
宣布启用 Rocky Linux
项目,而 Ctrl IQ
将作为 Rocky Linux
的赞助商为期提供法律费用和部分启动开支等初始资金, Ctrl IQ
会与 Rocky Linux
项目之间会保持独立性,确保其不会受到 Ctrl IQ
或者其他投资公司的影响。
Rocky Linux
定位将和以前的 CentOS
一样,是一个社区的企业级发行版本,其官网宣称第一个发行版本在 2021
年 3
月 31
日左右发布。因为有 Kurtzer
这样的 CentOS
创世人的主角光环加持和 CentOS
取得的成功作为借鉴,因此 Rocky Linux
项目这对广大 CentOS
用户来说也许是很值得期待的另外一个重大事件,感兴趣的朋友可以关注其官方网站以了解最新动态: https://rockylinux.org/
,让我们拭目以待其月底的发布。
开源社区就像茂盛的亚马逊雨林,一颗苍天大树的倒下,会为其他的生物的成长提供空间、养分和光照。最终会弥补这颗大树倒下所留下的空白。 CentOS
离开后,相信不仅仅只是 Rocky Linux
,会有更多的项目参与进来,这对广大最终用户来说也许是好事情,毕竟有竞争才会刺激进化。
大家也完全没必要就此事诟病红帽,因为说一千道一万,如果没有红帽对开源和社区的贡献,我们根本不可能有 CentOS
或者 Rock Linux
这样让大众喜爱的社区企业发行版,可以说没有开源就成就不了红帽,而没有红帽,也不会有今天的开源盛世。红帽是家公司,需要有正常收入才能维持公司的正常运作和发展。而且对于红帽的用户,红帽自己也有非常清晰的建议来让用户选择合适的发行版本:
对于想参与 Linux
操作系统开发和面向桌面的使用场景的个人用户和爱好者可以选择 Fedora
, Fedora
完全免费无服务支持每 6
个月更新一个大版本
家用环境,但是对操作系统有稳定系和安全性要求的可以使用采用 RHEL
: Red Hat Developer program(developers.redhat.com)
。这是为开发人员提供免费的 RHEL
订阅,可以在线升级、查资料库,不能开 Case
,详见红帽的微信公众号
开发以及 CI/CD
场景,同时还需要确保 RHEL
和第三方软硬件的兼容性的场景: Red Hat Developer program(developers.redhat.com)
,同上。
开发以及 CI/CD
场景,同时还需要确保 RHEL+1
和第三方软硬件的兼容性的场景: CentOS Stream
在容器化环境中开发应用的场景: RHEL UBI
,这是红帽发布的基于 RHEL
的容器镜像,有 RHEL7
和 RHEL8
的版本,任何人都可以在容器环境中使用红帽的 RHEL UBI
,而且有来自红帽的技术支持
希望参与 RHEL
的开发的场景: CentOS Stream
在生产环境中运行关键负载应用: RHEL
,有来自红帽的企业级技术支持包括热线电话、 web
开 case
和浏览资料库升级等等
为分销和硬件开发软件: Red Hat Partner Connect Program(connect.redhat.com)
对于现有的 CentOS
用户来说,如果希望有人对生产环境上运行的 RHEL
兜底,那么迁移到 RHEL
可能是最佳选择,毕竟 CentOS
就是源自 RHEL
,而且为了继承 RHEL
的稳定、安全和可靠,它尽可能消除对 RHEL
的修改。红帽也提供了相应的工具( convert2rhel
)和服务来帮助你进行迁移。让专业的人干专业的事情,要比我们自己有效率的多。
以上内容仅代表本人个人观点,感谢各位看官百忙之中赏脸浏览,如需转载请保留原文出处。我是力锋,一个有情怀的,搞了一辈子开源老工程师。
以上是关于透过现象看本质:咱也来聊聊CentOS和红帽的主要内容,如果未能解决你的问题,请参考以下文章
透过现象看本质——聊一聊ELK
透过现象看本质——Nginx模块
透过现象看本质,图解支持向量机
透过现象看本质
透过现象看本质——聊一聊docker的硬件资源控制与验证
透过现象看本质