透过现象看本质:咱也来聊聊CentOS和红帽

Posted 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和红帽
图二: 红帽的社区开源到开源企业版的生态系统
CentOS 成功说到底是因为RHEL 的成功,说到RHEL 的成功,我们必须要提一下红帽一直坚持的UpstreamFirst 的原则。了解了这个对于帮助大家理解以下几个问题:
  1. 那么多人和企业参与开源的,为什么在开源软件企业化的市场上貌似只有红帽风生水起?
  2. 红帽为什么要把投资从CentOS 切换到CentOS Stream
  3. CentOS 的用户以后怎么办?
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 9 发布
所有已发布版本的生命周期结束后,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 用户该何去何从?
首先,切换到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的硬件资源控制与验证

透过现象看本质