草庐IT

聊聊CentOS停止维护,要我说这是件大好事!

zhangyanfei01 2023-04-04 原文

大家好,我是飞哥!

相信大家都听说过CentOS即将停止维护的事。今天就这件事,我来聊聊我的看法。我认为这在国内的技术圈内是个利大于弊的好消息

关于这件事,可能大部分同学还都只是粗浅地吃过1-2次瓜而已,并没有搞懂其中的缘由。其背景是这样的。

在过去的很长一段时间里,国内绝大部分互联网公司的服务器上所安装的操作系统都是总部位于美国北卡州红帽公司的CentOS。据统计,CentOS在服务器领域的占有率高达90%。

其实CentOS只是红帽旗下的一个发行版而已。另外两个是Fedora和RHEL(RedHat Linux)。这三个发行版的主要区别是在于更新策略的不同。Fedora是一个先行试验版本,会快速迭代各种新的Linux功能和特性。RHEL是红帽公司的商用发型版本。待各种新特性稳定后才会更新到其中,而且还是付费的。我们所熟知的CentOS,是RHEL的开源免费版本,它不仅仅是集运稳定的RHEL编译,而且还有一些问题的修复。虽然不如RHEL新,但胜在稳定。

相当于在版本迭代的流水线中,这几个版本有个上下游关系。Fedora在上游、RHEL居中,CentOS最靠下。在之前红帽公司的战略可能想的是我把前期版本放在CentOS里,新的稳定的通过我的商业版本RHEL来提供。这样又能靠免费版打造社区,还能靠商业版赚钱。

新的CentOS Stream被塞到了RHEL的前面。也就是说,CentOS Stream 和 RHEL现在完全反过来了。

现在CentOS Stream都是各种小版本更新,优先被当小白鼠试用各种各种新特性和新内核。待你稳定后人家再合并回人家的RHEL版本里去。之前 RHEL在上游的话,其实没什么太大问题。因为人家有红帽的付费服务作为支撑,即使有问题人家也能快速支持。但你一个免费的CentOS Stream如果部署到线上真出了啥问题,那是叫天不应,叫地不灵。这种情况下谁还敢用你的CentOS Stream。

红帽公司这时内心漏出鬼魅且阴险的一笑:“怎么样,老夫是不是技高一筹,这下你们都该乖乖来买我的付费RHEL服务了吧?”

要我说红帽你这家伙在中国市场混迹多年,没想到在对用户的理解上还是连及格的水平都没达到。我们这边的用户都是“要钱没有,要命一条”的主。随你咋搞,爷反正就是不付费。

另外我们也确实有大型企业是愿意付费的。但是真给你付费了你能保证给我们一天天的给我们好好服务么。保证哪天不再给我们来卡一下脖子么,谁敢信你。

而且其实国内在Linux的发行版上之前也并不是没有成果。早在2011年,腾讯在通过自主研发来代替外购的Linux发行版了,到2016年的时候就基本上全覆盖了腾讯的全部业务,支撑了全腾讯公司的业务平稳发展一直到今天。

对于腾讯来说,多年在Linux发行版上的积累可算是有舞台释放了。然后就是在各种公有云、私有云一顿操作,在2022年的时候达到了装机1000万台的规模。

腾讯代替CentOS对外的服务产品是腾讯云上提供的TencentOS Server。是基于社区LTS独立演进、全面优化、也同样稳定的替代。而且在用户态和CentOS同源兼容,不管你是CentOS7还是CentOS8。

在实现上,只需要新建一个基于 TencentOS Server的集群,把原来跑在CentOS上的服务迁移过来就行了。

但是这里面还有一个棘手的问题存在,那就是如果服务不适合这样大规模的跨集群迁移咋办。比如很多银行的服务都是对稳定性要求特别特别高的,迁移中引入的哪怕一点点的风险都是不可接受的。事实上,腾讯也已经把这个难关给攻破了,那就是原地迁移

所谓原地迁移,就是直接在原来安装CentOS的服务器上安装新的TencentOS。在给服务器上的原rpm软件包执行全量的替换,记录文件变更后,然后执行内核替换,重启后立即生效。

这就好比大家看过的给F1赛车几秒钟之内就换掉四条轮胎类似。而腾讯的原地迁移是直接给服务器用最短的时间换了心脏 - 操作系统!

CentOS停止维护激发了一系列国内OS的繁荣发展。所以,我一直都认为,CentOS停止维护只会给我们带来短期的阵痛。但长期来看,这是一件有利用我国操作系统产品发展的大好事!

声明,本文中所使用的部分资料和数据来源于腾讯技术开放日 TechoDay 活动。这个活动中有很多腾讯硬核技术在各个大型企业中的应用介绍,包括操作系统、云平台TCE、数据库、对象存储等。感兴趣的同学可以在下方的二维码中下载TechoDay资料。

有关聊聊CentOS停止维护,要我说这是件大好事!的更多相关文章

  1. ruby - 使用 ruby​​ 将 HTML 转换为纯文本并维护结构/格式 - 2

    我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h

  2. ruby-on-rails - 无法在centos上安装therubyracer(V8和GCC出错) - 2

    我正在尝试在我的centos服务器上安装therubyracer,但遇到了麻烦。$geminstalltherubyracerBuildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingtherubyracer:ERROR:Failedtobuildgemnativeextension./usr/local/rvm/rubies/ruby-1.9.3-p125/bin/rubyextconf.rbcheckingformain()in-lpthread...yescheckingforv8.h...no***e

  3. arrays - 这是 Ruby 中 Array.fill 方法的错误吗? - 2

    这个问题在这里已经有了答案:Arraysmisbehaving(1个回答)关闭6年前。是否应该这样,即我误解了,还是错误?a=Array.new(3,Array.new(3))a[1].fill('g')=>[["g","g","g"],["g","g","g"],["g","g","g"]]它不应该导致:=>[[nil,nil,nil],["g","g","g"],[nil,nil,nil]]

  4. kvm虚拟机安装centos7基于ubuntu20.04系统 - 2

    需求:要创建虚拟机,就需要给他提供一个虚拟的磁盘,我们就在/opt目录下创建一个10G大小的raw格式的虚拟磁盘CentOS-7-x86_64.raw命令格式:qemu-imgcreate-f磁盘格式磁盘名称磁盘大小qemu-imgcreate-f磁盘格式-o?1.创建磁盘qemu-imgcreate-fraw/opt/CentOS-7-x86_64.raw10G执行效果#ls/opt/CentOS-7-x86_64.raw2.安装虚拟机使用virt-install命令,基于我们提供的系统镜像和虚拟磁盘来创建一个虚拟机,另外在创建虚拟机之前,提前打开vnc客户端,在创建虚拟机的时候,通过vnc

  5. ruby - 如何在 RVM 下将 Bundler 安装到 @global gemset,这是正确的方法吗 - 2

    我在OSX上(如果重要的话)。如果我使用RVM安装Ruby,它会默认将Bundler安装到@globalgemset假设我想要一个不同版本的bundler。我假设我需要做的就是执行geminstallbundler--version但是,这会将bundler安装到默认gemset并且RVM不会为其设置路径。因此,如果我键入bundler,它仍会启动一个与Ruby一起安装到@global中的bundler两个问题:如何将bundler安装到@globalgemset。将bundler安装到@globalgemset中的模式是否正确,或者我遗漏了什么 最佳答案

  6. c - 这是什么宏? - 2

    在ruby.h中,有很多函数宏是这样定义的:staticinlineint#ifdefined(HAVE_PROTOTYPES)rb_type(VALUEobj)#elserb_type(obj)VALUEobj;#endif{if(FIXNUM_P(obj))returnT_FIXNUM;if(obj==Qnil)returnT_NIL;if(obj==Qfalse)returnT_FALSE;if(obj==Qtrue)returnT_TRUE;if(obj==Qundef)returnT_UNDEF;if(SYMBOL_P(obj))returnT_SYMBOL;returnBU

  7. ruby - 使用 Ruby Daemons gem 检测停止 - 2

    我正在使用rubydaemongem。想知道如何向停止操作添加一些额外的步骤?希望我能检测到停止被调用,并向其添加一些额外的代码。任何人都知道我如何才能做到这一点? 最佳答案 查看守护程序gem代码,它似乎没有用于此目的的明显扩展点。但是,我想知道(在守护进程中)您是否可以捕获守护进程在发生“停止”时发送的KILL/TERM信号...?trap("TERM")do#executeyourextracodehereend或者你可以安装一个at_exit钩子(Hook):-at_exitdo#executeyourextracodehe

  8. ruby - 从数组中生成哈希 - 这是如何工作的? - 2

    fruit=["apple","red","banana","yellow"]=>["apple","red","banana","yellow"]Hash[*fruit]=>{"apple"=>"red","banana"=>"yellow"}为什么splat会导致数组被如此整齐地解析为Hash?或者更准确地说,Hash如何“知道”“apple”是键,“red”是其对应的值?仅仅是因为它们在水果数组中的位置是连续的吗?这里使用splat有关系吗?否则哈希不能直接从数组中定义自己吗? 最佳答案 作为documentation状态:H

  9. ruby - 我可以使用 RVM 为所有用户维护单一版本的 Ruby 吗? - 2

    我喜欢RVM。我意识到它的主要用例是让不同的用户在不同版本的Ruby之间切换。但是假设我正在将Rails应用程序部署到服务器,并且我只想运行单个版本的Ruby。特别是,我想要1.9.2,用RVM安装它很容易,但没有它就很痛苦。有没有一种方法可以让我说“我希望这是所有用户的规范Ruby安装”(连同它的所有gem),而不必手动创建一堆符号链接(symboliclink)并在每次更新到更新时更改它们Ruby版本? 最佳答案 以root身份安装RVM并执行sudorvmuse1.9.2--default。任何采购/usr/local/rvm

  10. ruby - 如何停止 jekyll 本地服务器 - 2

    我刚刚在本地设置了我的第一个Jekyll项目。我已经让服务器运行,但我忘了使用自动标志。所以现在我想停止服务器并使用标志重新启动。但是,在我启动服务器后的命令行中,我没有得到新的提示,所以我无法输入任何新命令。我不太习惯命令行,所以我真的很感激知道我应该做什么!我正在使用MacOSX和terminal.app,如果有区别的话! 最佳答案 psaux|grepjekyll|awk'{print$2}'|xargskill-9 关于ruby-如何停止jekyll本地服务器,我们在StackO

随机推荐