CentOS社区还存不存在?CentOS项目还存不存在?众多CentOS用户将何去何从?伴随CentOS停更,大家可能会有这样那样的疑问,今天针对以上问题,我来进行一一解答。 |
CentOS实际上有两个变种,一个叫做CentOS Linux,另外一个叫CentOS Stream。
CentOS Linux出现比较早,大家所知道的CentOS都是CentOS Linux。而CentOS Stream是两年前红帽对外推出的,推出CentOS Stream之后就相当于把CentOS Linux逐渐做了升级换代。
这就好比是,你过去用的是iphone4,现在是iphone5,相当于是一个升级换代,换代之后主打的名字也发生了一些变化——从CentOS Linux到CentOS Stream,后面我会讲到,这个变化本身是跟开源开发模式的演进,以及市场需求的变化有关系的。
接下来我相信大家还会有其他的一些疑虑,比如CentOS Linux到CentOS Stream是不是稳定的?我先简单一句话回答,它是稳定的。具体怎么稳定,听我一点点给大家引出来后面的一些细节。
Linux发行版开发模式的演进
咱们先来看看Linux发行版开发模式的演进,这可能也是好多开源的开发方式的演进。Linux已经走过了31年,早期完全凭爱好做Linux,那时候的Linux也正像Linus Torvalds本人讲的,就是为了好玩、有趣才做的Linux。
逐渐的Linux这种开源的开发方式被更多的人所接受,随着Linux逐渐走向企业级,Linux逐渐不是一个玩具了。
Linux发行版有社区版、企业版,我们主要讲有了企业需求之后,Linux发展的几大阶段。
Fedora时代
第一个阶段是所谓的v1.0阶段,就是Fedora的时代。其实很多人也用过Fedora,Fedora的桌面还是很炫酷的。
为什么当时会出现Fedora Linux呢?主要是取决于两方面原因,而且这两个原因还是有些对立的。一个是说如果要做企业级的Linux,系统需要足够稳定,这就意味着你的更新也许不能太频繁,即使更新了,你的兼容性也要保证得特别好。
但是对于创新来讲,如果过多考虑稳定、兼容,创新的包袱就会比较重。如何平衡创新和稳定两者之间的关系?红帽把自己原来统一的Redhat Linux,分成了Fedora和Redhat Enterprise Linux。
不光是红帽,其他主流的厂商,像SuSE也是这样的方式。这样两者区分之后,对于不同的用户,如何去选用呢?如果说我们是企业用户,我们就当然选择稳定版,对于社区用户,你就用Fedora。但那时候做Linux开发的时候,不同阶段各有侧重点,那个时候更侧重Linux操作系统本身的东西,特别是图形化桌面的一些功能。
其实尽管红帽已经不做桌面了,但是在Gnome里面的贡献依旧很大。在那个时候,Fedora这种模式是很好的,它把最新的一些软件包给到你。那时候的桌面其实已经很成熟了,但是可能主要是因为兼容性、稳定性的原因,Linux的桌面毕竟用的人少,所以并没有完全发展起来。
CentOS Linux时代
再往后发展,因为逐渐走向移动互联网,类似于安卓这样的东西就出现了,本身桌面的份额也越来越小,在这方面有Windows、有苹果,所以对于Linux桌面来讲,后来逐渐的各大发行版厂商都放弃了在桌面上的投入,比如红帽,再比如SuSE。
在服务器端我们逐渐走向了云、虚拟化。这个方向成为关注焦点后,如果延续之前我们讲的云上创新,那么虚拟化、云、容器或者容器里面的创新我们都基于Fedora去做可不可以?企业级的用RHEL。后来发现这种方式其实不是很好,为什么呢?因为我们希望有稳定的内核,我们认为操作系统是一个最底层软件,我们不希望最底层软件出毛病。
这时候,大家需要一个跟RHEL品质几乎相同的东西作为它的底层去做上面的一些开发,这时候CentOS就应运而生了。但CentOS是社区里出现的,并不是红帽给它做出的一个CentOS。CentOS出现之后,它的理念实际上很契合当时Linux上开发的趋势,所以红帽就把CentOS收购过来,收购过来之后,CentOS Linux继续按照原有的技术方向去发展。
这时候也有一个平衡的问题,一方面CentOS Linux是我们要在这上面做一些基于虚拟化、云之上的创新;另外一方面,它的基础要足够稳定。
所以我刚才讲的这一段历史,就是上边这幅图里所展现的。但是我相信可能我们有好多朋友了解CentOS,可能只知道左边这一部分——我们知道RHEL红帽企业级Linux是来自于Fedora的,可以说Fedora是RHEL的试验场。CentOS是基于RHEL出现的一个下游复刻版本,跟RHEL近乎是一样的,所以它的稳定性是毫不怀疑的。
但是右边这一部分很多人不了解——实际上当云、虚拟化这些成为一个主要的应用负载的时候,我们会发现其实CentOS里面的东西已经不仅仅是RHEL里面的东西了,它里面还有大量来自于RDO的东西,RDO是红帽的OpenStack社区版。
有很多像比如虚拟化,像Libvirt、oVirt,类似于这样的东西也加到了CentOS里面。所以坦白讲,CentOS里面并不光是红帽企业级的Linux包,它还包括很多其他的包。坦白讲,其他的包在CentOS里面,它的品质就应该不如RHEL了,因为RHEL是经过严格测试的,对于像社区版里的RDO里面的东西并不是严格测试的。但是RDO这个东西,社区版的OpenStack经过严格测试之后,生成红帽企业版的OpenStack,这是严格测试的。
所以在CentOS里面我们看这个箭头的指向,它一方面有RHEL里稳定的操作系统的包,同时也有关于云方面的、从测试各方面看没有那么稳定的包在CentOS Linux里面,实际上这是CentOS Linux那个时代的模式。
CentOS Stream时代
接下来可能就谈到最关键的CentOS Stream阶段了。CentOS Stream阶段我们发现过去的开发方式已经不能满足现在的要求了,这点可能很好理解:现在讲数字化转型也好,数字孪生也好,以前很多东西并没有被数字化,而现在已经被数字化了。这个世界本身就是频繁变化的,所以就要求反映它的东西也要频繁变化。
这个趋势映射在我们的软件里,25年前Linux发布一个版本的时候,没有几个人去做贡献,所以我们用什么样的开发模式、开发流程可能都没有太大所谓。但是现在一个版本里有一千多人去做贡献,贡献量是极大的,所以它的变化是非常快的。在这种变化非常快的社区版本里面,如果红帽还想做一个企业级的非常稳定的版本给大家用,那你的研发流程必然要做这样的一个改进。
这样的改进就是所谓的Stream模式,Stream的模式区别于传统的所谓瀑布式开发,不是把集成、测试、验证这样一些步骤放在最后一步,而是随做开发就随做测试,可以保证每一个发布的版本都是稳定版。这是因为我们这种快节奏要求Stream模式,而不是说我们出了一个Stream模式。所以简单的总结,CentOS Stream是一个稳定的、可靠的RHEL的持续交付版本。
关于CentOS Stream的几个热门问题
CentOS blog上有一篇文章,是2020年12月发布的,里面有几个特别重要的热点问题,我给大家重点再强调一下。
CentOS的未来是怎么样的?在CentOS官方网站上给出的一个FAQ,我不想给它做任何由于翻译的曲解。如果你是一个CentOS Linux的User,你不要着急,未来会有一个CentOS Distribution等着你。CentOS Distribution是什么呢?实际上就是我们现在的这个Stream。
大家关心的是Stream稳定不稳定、安全不安全,有没有CVE漏洞的更新、补丁。我们做这个新版,一定要保证它原有的品质。
第二点也比较重要,如果你还想要一个老版的CentOS Linux一模一样的东西,可以自己去做。那你自己去做的话,肯定要有一个RHEL的代码,代码是从哪儿来呢?git.centos.org。之前RHEL代码是在这里,之后RHEL的代码也是在这里,没有任何区别,这一点实际上是完全公开的。
当然如果你是红帽的客户、订阅用户的话,你在订阅的账号里就可以很方便的下载你的代码。上面提到的这个代码下载的git地址是说你跟红帽没有任何关系,我就想看看你的代码,这是可以的。这实际上也完全遵循GPL协议,大家共同遵守、共同繁荣好这个社区。既然我们是基于GPL的代码,尽管我们做了很多改动,这些改动也都会完完整整的公开。
还有大家比较关注的一个问题,CentOS Stream是不如RHEL的beta测试版吗?我们明确讲CentOS Stream不是一个测试版,后面我会简单解释一下为什么它不是一个测试版。
还有一个比较关键的问题,因为CentOS Linux8现在已经转成CentOS Stream8了,那我怎么去转?你说没有停服,那我怎么能继续拿到补丁?那你就在你的这台机器上敲这两行命令:
[root@centos ~]# dnf swap centos-linux-repos centos-stream-repos
[root@centos ~]# dnf distro-sync
敲完之后,把它的源重新一更新,从CentOS Linux的源更新到CentOS Stream的源,然后把所有的包下载下来安装,然后替换,接下来你的系统就照样去使用了。
即使你是比较资深的用户,如果我在你的电脑上敲了这两条命令,接下来去使用,其实你是毫无感知的。就是它的稳定性、使用、功能都跟之前没有差别。
接下来我们讲一下Stream为什么跟RHEL一样是稳定的。对于Fedora来讲,我们可以认为它是滚动更新,因为每半年我们就会出一个新版本。这里面所谓滚动更新,是说我滚动更新出来一个新东西,跟老的东西的兼容性并不是特别好。比如在29里面我们有一个功能,在30里面可能给它废弃了,这是完全有可能的。
但是对于CentOS Stream和RHEL来讲就不会,因为这两个东西是基于Fedora某一个特定版本,比如基于Fedora28,我要做一个稳定的企业版,我拉一个分支出来。但这个稳定版有些新的功能会加入进来,这个加入进来叫Backport,Backport是说我需要一些新的特性、Bug fix,而不是说一股脑的把所有东西都加过来。
CentOS如何构建CI
接下来我们讲到CentOS如何构建CI。CentOS Stream跟RHEL,同一份代码,进到两个编译和测试的系统里面去,编译、测试的过程用到的工具都是一样的,无非一个是社区版本,一个是企业版本,就是名字不一样,但是它的内容是一样的。这里面测试用例有可能不一样,但是最后通不通过测试用例的标准是一样的。比如Stream里面有300个测试用例,RHEL里面有500个测试用例,中间重合了200个测试用例,实际上不重复的一共有600个测试用例。这600个测试用例无论你是CentOS Stream的code走到这儿,还是RHEL的code走到这儿,这600个都必须完全通过之后,才可以往下走。有一个没通过,大家都等一等,这个代码质量不合格,回去重新做。
Gating这一步主要是自动化的一些测试手段,Verification这一步主要是手动的一些测试手段。我们已经尽量的把所有可以自动化的都做自动化了,但是不能说所有东西完全自动化,有一些针对于特定环境的一些可能需要手动的。但这一步Verification也是两边都要满足Verification的这个成功标准之后,才可以往下走,所以它的质量保证是一样的。
说了这么多质量保证,相信很多做测试的朋友可能会讲,你每出一个小的改动,都走完整的测试流程,走得过来吗?你是用什么样的架构去支撑的?所以也是基于这种事件触发的机制,用空间去换时间,CI的系统就完全并发的会起很多个不同的测试环境
所以,整个CI的过程是完全满足DevOps CI/CD流水线的,可以快速的做大规模测试,以保证当有更多并发,有很多人去提交patch补丁的时候,我能够快速的去做Stream的方式。
讲到这里,我不知道大家有没有这样一个疑问,这种方式是不是跟微服务有点像?实际上是有点像。我们做微服务的话,把一个大的分成若干小的模块,也是为了更新方便。我们在内核里边为什么不能做微服务呢?我觉得很关键的一点,因为内核,特别是Linux是一个宏内核,所有东西都在内核里面,而且内核整体上它的代码实际上还是一大坨一个整体。一个小的驱动,实际上它可能就把整个内核都搞崩,这一点在微服务里实际上是不存在的。
正因为这样,内核里面每做一个小的改动,都要对所有的做测试。这样的话测试量很大,所以如果你没有一个先进一点的架构,是无法支撑这种Linux发行版开发的。也就是说你从CentOS Linux到CentOS Stream必须做这样一步转变,因为如果不做这样的转变,那你的开发节奏就跟不上,拿不出一个又稳定同时又比较新的版本。
开源软件供应链安全
因为今年的log4j漏洞,可能有些人会觉得log4j就是洪水猛兽。其实大家选择log4j是没有问题的,问题是说当出现安全漏洞,我们发现安全漏洞的时候,我们如何去应对。
这个过程我们会发现跟现在的DevSecOps的理念很像,我们不能保证你进来的时候一定没有漏洞,我们的目的是打造一个对开源软件供应链安全提供保障的闭环。
第一步,我们在UpStream阶段肯定有一个甄选和识别,是不是存在一些恶意的代码成分呢?甄别出后,是不是有一个规范的流程可以帮助我们去选;选完之后,我们打包对它进行测试;到最后你的传播过程中,是不是有一些很好的校验手段;特别是最关键的,到最后一步我们已经把这个东西给到用户,但我们出现问题的时候,是不是能够有效的去解决。
所以我们认为开源软件的供应链安全,实际上主要是技术问题。
AlmaLinux:一个替代方案
AlmaLinux是什么?现在好多做CentOS Linux一样的东西,完全基于RHEL代码去做复刻。整个过程用到了哪些组建,所有的AlmaLinux里面的东西都是开源的。如果大家感兴趣的话,可以看一下这个流程,就看CentOS.org上面代码的变化。针对于这里面的任何些变化,就可以触动它的打包构建的流程,最终出品它的AlmaLinux。
从这点也以看出来,CentOS肯定是没有停服的,如果停了之后,所有这些下游的版本,像AlmaLinux、RockLinux和其他很多的Linux,它的来源从哪儿来呢?因为红帽这个RHEL就是基于CentOS Stream来做的,除非红帽不做RHEL了,否则CentOS Stream就会一直都在。
CentOS Linux不是红帽企业级Linux
最后说一下CentOS Linux,它跟红帽企业级的Linux还是有很大差别的。对于企业级Linux要求的安全认证、软硬件认证,在企业级保障中,更多的不是功能而是保障,这样的一些保障在企业级Linux里面是有的。在CentOS里面坦白讲确实很稳定,如果一旦出问题,一旦有安全漏洞,就去找补丁,总有一天我可以找到补丁。但实际上你拿到补丁的速度,肯定没有企业级Linux快。
如果是延续这样的使用方式,你切到Stream上,可不可以呢?是完全可以的。当然了,其实对于企业级Linux,如果说有明确的规定,比如说有一些行业标准,建议还是选用红帽的企业级Linux。