Alibaba Cloud Linux 2 开源后又有什么新动作?

阿里妹导读:2019 年 4 月,Alibaba Cloud Linux 2 (Aliyun Linux 2) 正式开源。时至今日,已经走过三个月的里程。在这段时间内,这个刚诞生不久的为阿里云 ECS 环境定制优化的 Linux 操作系统发行版的装机量稳步上升。本文将重点介绍 Alibaba Cloud Linux 2 的特性更新及开发过程中的决策过程与质量保证细节。


图:Alibaba Cloud Linux 2 (官网产品名:Aliyun Linux 2) 在 阿里云 ECS 上过去一个月 vcpu 保有量增长示意图 (仅展示趋势,不代表绝对数值)

1. 开源与背景

2019 年 4 月正式对外开源的 Alibaba Cloud Linux 2 是下一代 Alibaba Cloud Linux (官网产品名 Aliyun Linux)操作系统发行版,以 CentOS 7、社区长期支持版 (LTS) 内核、其他社区版用户态软件及阿里巴巴多个开源内部产品等多个来源为上游,为云上应用程序环境提供 Linux 社区的最新增强功能,在提供云上最佳用户体验的同时,也针对阿里云基础设施做了深度的优化和定制。

Alibaba Cloud Linux 2 开源的重要亮点是自带的阿里云云内核(Cloud Kernel),同时也是开放在 GitHub 上的 Alibaba Cloud Linux Kernel 项目[1],它是开发团队全体成员倾力打造的一款内核产品,旨在将阿里巴巴操作系统团队多年技术积累分享给社区,也欢迎志同道合的开发者一同参与内核开发协作,共同创造更加有益的价值。

开源历史

Alibaba Cloud Linux 2 的开发团队是阿里巴巴操作系统团队,前身是淘宝内核组,团队成员大多是活跃在内核社区的开发者,九年来积累了深厚的操作系统和内核开发底蕴

Alibaba Cloud Linux 产品是阿里技术商业化和开源思想完美结合的范例。在阿里云 ECS 产品中作为官方镜像之一,Alibaba Cloud Linux 与 CentOS, Ubuntu 等社区发行版一同作为选项提供给客户,并为 ECS 环境定制了多项特性和性能优化;不仅如此,Alibaba Cloud Linux 更天生带着开源的基因。开放源码是一种共享的黑客精神,从开放源码运动诞生至今,无数优秀的开源产品给数以百万计的软硬件产品和云产品提供了强大的基础系统底座支撑。站在这些巨人的肩膀上,我们继承开源的精神,创造了 Alibaba Cloud Linux 产品,现在,又推出了 Alibaba Cloud Linux 2 操作系统发行版,并以相同协议开源,将我们的工作成果回馈到社区。

  1. 2017 年,基于 CentOS 7.3 源码重新制作的 Aliyun Linux 17.01 上线,定制提供了较新的 4.4 版本内核,并完成整个操作系统发行版开源;
  2. 2018 年 10 月, Alibaba Cloud Linux 2 项目需求评审启动,11 月项目正式立项;
  3. 2019 年 3 月 1 日, Alibaba Cloud Linux 2 Beta 发布,邀请天使客户参与公测;
  4. 2019 年 4 月 2 日, Alibaba Cloud Linux 2 GA 正式发布,在 ECS 公有云产品官方镜像列表上架;
  5. 同时, Alibaba Cloud Linux 2 发行版源码在阿里 OPSX 软件仓库上架开源,内核源码在 GitHub 开源。

2. 功能与优势

2.1 初始版本功能

Alibaba Cloud Linux 2 最主要的功能更新是内核更新,基于内核社区长期支持(LTS)的 4.19 版本定制,在 CPU、内存、文件系统、IO、网络、cgroup 等子系统上增加了大量适用于云场景的新特性、性能改进和重大缺陷修复,支持:

  • CPU:多项 CPU 安全修复,CPU 负载预测功能改进以增强调度均衡性;
  • 内存:TLB 相关优化,writeback 相关优化,OOM-Killer 可靠性优化,空闲页面跟踪(Idle Page Tracking)特性支持;
  • 文件系统:Ext4, XFS, Btrfs, NFS, Overlayfs 等重要文件系统的新特性支持及优化;
  • IO: 全新的异步 I/O 优化,异步 I/O 轮询特性支持;
  • 网络:BBR,零拷贝 TCP API 支持,XDP 及 AF_XDP 机制支持;
  • cgroup: cgroup v2 支持, 基于 cgroup v2 的 cgroup writeback 支持, 和 blkio latency 支持。

此外,和内核相关的功能和改进还有:

  • 内核启动参数和系统配置参数调优,提升启动速度和错误恢复相关的能力;
  • 提供操作系统崩溃后的内核转储(Kdump)能力,用户可以根据需要在线打开或者关闭该功能而无需重启操作系统;
  • 提供内核热补丁升级(Live Patching)能力。

2.2 更新与发展

2.2.1 系统镜像更新

过去三个月,Alibaba Cloud Linux 2 发布了两个镜像更新。最新版本的系统的镜像 ID 为 aliyun_2_1903_64_20G_alibase_20190619.vhd。

在最初发布的版本中,我们只允许用户通过 ECS 控制台购买的方式创建新的虚拟机。从 20190517 版本开始,我们提供了可独立下载的系统镜像文件,用户可以更方便地基于 Alibaba Cloud Linux 2 系统镜像创建并使用自己的虚拟机。我们希望藉由此方式,让用户更积极地参与到 Alibaba Cloud Linux 2 的使用中。

当前的独立系统镜像文件为 qcow2 格式,运行时支持基于 QEMU/KVM 的虚拟化环境,在虚拟机中使用 virtio 驱动。独立镜像下载后初始化需要依赖 cloud-init 机制,详情请参考独立镜像说明文档[2]。

2.2.2 软件包更新

除了镜像迭代, Alibaba Cloud Linux 2 还持续保持系统 YUM 源的更新,用户可以在操作系统内通过 yum update 命令维持软件包的最新状态。

内核方面的更新,我们持续基于社区 LTS 4.19 内核 rebase 代码,加上自研功能和 Bug 修复。每三到四个星期,我们会快速迭代发布一个新的内核包。在迭代周期内,除了完成必要的稳定性测试,我们也会积极修复内核BUG并反馈到内核社区。在接下来的章节会详述。

在操作系统发行版基础系统(BaseOS)功能方面,除了常规同步上游社区的修复与更新,我们选择性地更新了多个用户态软件包,以匹配最新的内核功能及其他日常使用需求,并且对这些包进行了必要的测试和独立的维护。更新的软件包包括但不限于:crash, e2fsprogs, xfsprogs, iproute 等。

此外,我们还与阿里巴巴内部其他团队合作,持续将阿里巴巴的开源成果集成到 Alibaba Cloud Linux 2 中并输出给用户。目前集成并保持更新的阿里巴巴内部软件有:

  • Alibaba Dragonwell:Ali-JDK 的开源版本,6月下旬刚刚发布 GA 版本,我们及时跟进集成并完成了软件测试后,输出到 Alibaba Cloud Linux 2;
  • PouchContainer:阿里巴巴开发的高效容器引擎;
  • Dragonfly client:开源的基于P2P镜像及文件分发系统;
  • Tengine:在 Nginx 的基础上,针对大访问量网站的需求,添加了很多高级功能和特性的 Web 服务器项目;
  • aliyun-cli:开源的用于管理阿里云资源的工具;
  • ossfs:用于将阿里云 OSS buckets 挂载到本地的工具;
  • eBCC:社区版 BCC 的功能扩展。

用户可以在操作系统内通过 yum install 命令直接安装对应的软件包。

2.2.3 Cloud Kernel 社区贡献

Alibaba Cloud Linux 2 是一个建立在社区协作基础上的开源操作系统发行版项目,同时也非常重视回馈社区。

Cloud Kernel 是 Alibaba Cloud Linux 2 最重要的开源内核,也是在 GitHub 上的开源项目。如前所述,我们保持三周到四周的迭代周期,在每个迭代都保持对外推送最新开发补丁。在迭代开发过程中,我们多次测得 4.19 版本 的 LTS 内核的 BUG,并及时向社区报告,或者通过定位将主线内核的修复移植回 LTS 内核,或者主动向社区提交补丁。

对于测试中发现的 LTS 内核 BUG,我们首先会根据已划分的内核领域进行初步判断,如果难以直接定位,则会进行 bisect 寻找最有可能出现问题的代码。经过初步的分析之后,根据问题的难易程度,我们会选择直接向社区提交修复补丁或者进行讨论。

有一种常见的情况是,某个内核 BUG 在主线内核中已经修复,但是由于种种原因,该修复没有出现在 4.19 LTS 内核中,这种情况下,我们会选择先将主线内核修复的代码 cherry-pick 到 Cloud Kernel 的开发分支中,并且向 4.19 LTS 内核的维护者、以及对应内核子系统的维护者发送一封 backport 请求的邮件,提示维护者及时将该修复移植回来。

截止6月30日,团队在开发 Cloud Kernel 过程中,向内核社区提交并被接收的内核补丁有 19 个。此外,我们还积极向知名的社区测试套件 LTP, xfstests 等项目贡献了多个修复补丁以及新测试用例。

除此之外,Cloud Kernel 还与 Intel 0-day 项目等开源项目达成合作,0-day 项目团队主动向 Cloud Kernel 推送了多个修复建议及补丁,均已被接受合入开发分支。

2.2.4 内核重要功能更新

由于 Aliyun Linux 2 的内核需要运行在通用的 ECS 系统上,或者用户自定义的基于 QEMU/KVM 的虚拟机中,保持内核功能的通用性一直是我们在增加 Cloud Kernel 功能时的原则。在开发自研内核功能时,我们会对功能进行充分的评估,如果该功能的实现方式过于 Hack,或者引入该功能会造成内核维护成本急剧上升,我们会从架构的完整性考虑而酌情放弃该功能的开发。下面是两个近期自研的内核功能的例子:

(a) cgroup writeback v1

在4月份 GA 版本发布中,我们提到了基于 cgroup-v2 的 cgroup writeback 功能是 LTS 4.19 内核的一项重要更新;发布后,我们收到多个客户反馈,亟需此功能在 cgroup-v1 上的实现。在深入分析之后,我们意识到,cgroup writeback 功能天生适合 cgroup-v2 的平坦结构,却也不是不可能在 cgroup-v1 上实现。关键点在于在使用 cgroup-v1 时,需要人为保证对应的 blkcg 和 memcg 两个 cgroup 保持合理对应的映射关系。在梳理清楚 cgroup 映射关系限制条件后,我们完成了 cgroup writeback v1 在 Cloud Kernel 上的实现,并在 GitHub 上发布[3] 对应的更新;同时为了保证用户对于使用时的映射关系约束有足够的了解,我们在内核中默认将此功能保持关闭,并制作了相关文档[4]说明。

(b) TCP TIME-WAIT 状态超时接口

这个功能允许用户动态调整 TCP 连接的 TIME-WAIT 状态超时时间,允许其被设置为小于默认的 60s 值,从而在大量短连接应用中,提高应用性能。这个功能实际上是早期版本的 Taobao Kernel 已经实现并对外提供的功能,在决定是否要将此功能在 Aliyun Linux 2 上重新移植一遍时,我们重新评估了该功能的风险。在翻阅了 RFC 793 标准中 “The TCP Quiet Time Concept” 相关的概念后,我们认为该功能不符合 TCP "Quiet Time" 的概念,在不知晓该风险的情况下使用可能会造成系统不稳定;但是由于该功能确实被客户需要,且功能结构、代码实现较为独立,维护成本和风险可控。所以我们在内部实现时,显性备注了接口使用风险后,将功能在 GitHub 上发布[5]。

3. 研发过程中的质量保证

Alibaba Cloud Linux 2 使用了大量社区的功能,核心组件 Cloud Kernel 没有使用 Red Hat 内核版本,而是使用了基于内核社区 4.19 LTS 版本。众所周知,社区版的内核的稳定性一直为人所诟病,我们在采用此版本内核时,也有一样的担心。因此在研发过程中,我们对 Cloud Kernel 进行了积极的测试。

首先,得益于阿里巴巴操作系统团队中有多个内核子系统维护者、内核测试套件的维护者或前维护者,我们对于开源社区主流的测试套件对内核子系统的覆盖率及测试细节掌握较为全面。通过这些开源测试套件,我们发现了不少社区版内核的问题,并为社区贡献了多个补丁。

其次,在研发过程中,我们遵循“自己吃自己的狗粮”的原则,要求研发同学自行完成单元测试用例开发,并且集成到内部测试平台中进行回归测试。在测试平台的选择上,基于研发开发测试代码的便利性原则,我们选择了成熟的测试框架 Beaker[6],这是一个源自 Red Hat 的社区开源测试框架项目,可以很方便地集成测试代码,并且输出直观的测试结果。我们将自己开发完成的测试代码放到 Beaker 测试平台上,进行自动化的每晚构建回归测试(Nightly Regression Testing)。在每个迭代中,我们也发现了不少内核回归缺陷,都及时向社区提交了补丁或者参与了修复讨论,为稳定 4.19 LTS 内核做出了自己的贡献。

此外,在阿里巴巴操作系统团队内部有专业的质量保证团队。质量保证团队的测试平台集成了 40多个测试套件,覆盖了功能性测试、性能测试、冒烟及稳定性测试等各方面。在 Alibaba Cloud Linux 2 迭代周期进入交付测试阶段,会由质量保证团队负责相关测试,测试结果经过 Review 通过后,则可进行迭代发布。

4. Alibaba Cloud Linux 2 后续计划

  • 持续开发新特性,也积极将开源社区的最新成果带给 Alibaba Cloud Linux 2 用户,并回馈开源社区;
  • 进一步完善相关文档,包括初学者文档,吸引更多用户参与操作系统与内核开发;
  • 分享操作系统及内核相关的技术文章,筹建线上与线下活动,增强操作系统与内核领域的交流。

5. 结语

操作系统最近几个月成为了热门的话题,此时推出这样一篇介绍 Alibaba Cloud Linux 2 发行版的技术文章还显得比较应景。作为一个技术人,在日常的工作中,坚持技术的锤炼,乐于思考与分享,对操作系统和内核领域不断钻研,才能立足于瞬息万变的技术之潮中,并且游刃有余。


原文链接
本文为云栖社区原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/518340.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一站式数据采集存储的利器:阿里云InfluxDB®️数据采集服务

背景 随着时序数据的飞速增长,时序数据库不仅需要解决系统的稳定性和性能问题,还需实现数据从采集到分析的链路打通,才能让时序数据真正产生价值。在时序数据采集领域,一直缺少自动化的采集工具。虽然用户可以使用一些开源的采集…

Serverless 风起云涌,为什么阿里、微软、AWS 纷纷拥抱开源 OAM?

作者 | 张磊,阿里云原生应用平台高级技术专家邓洪超,阿里云技术专家责编 | 唐小引头图 | CSDN 下载自东方 IC出品 | CSDN(ID:CSDNnews)Serverless 这个词第一次被是 2012 年一篇名为《Why The Future of Software and …

K8S从懵圈到熟练 - 我们为什么会删除不了集群的命名空间?

阿里云售后技术团队的同学,每天都在处理各式各样千奇百怪的线上问题。常见的有,网络连接失败,服务器宕机,性能不达标,请求响应慢等。但如果要评选,什么问题看起来微不足道事实上却足以让人绞尽脑汁&#xf…

为什么技术人一定要懂点“可信计算”?

阿里妹导读:可信计算(TrustedComputing,简称TC)是一项由TCG(可信计算组)推动和开发的技术。可信的核心目标之一是保证系统和应用的完整性,从而确定系统或软件运行在设计目标期望的可信状态。可信和安全是相辅相成的&am…

很用心的为你写了 9 道 MySQL 面试题,建议收藏!

来源 | Java 建设者责编| Carol封图| CSDN下载于视觉中国 MySQL 也是作者本人正在学习的部分,后面会多输出 MySQL 的文章贡献给大家,毕竟 MySQL 涉及到数据存储、锁、磁盘寻道、分页等操作系统概念,而且互联网对 MySQL 的注重程度是不言而喻的…

OpenTelemetry-可观察性的新时代

有幸在2019KubeCon上海站听到Steve Flanders关于OpenTelemetry的演讲,之前Ops领域两个网红项目OpenTracing和OpenCensus终于走到了一起,可观察性统一的标准化已经扬帆起航。 这篇文章旨在抛砖引玉,希望能够和更多的同学一起交流可观察性相关的…

JavaScript-严格检查模式

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><!--前提&#xff1a; IDEA需要设置支持ES6 语法use strict; 必须写在JavaScript 的第一行严格检查模式&#xff0c;预防JavaS…

我们为什么需要 SpringBoot?

作者 | 阿文&#xff0c;责编 | 郭芮头图 | CSDN 下载自东方IC出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;任何先进技术的产生都不是凭空出现的&#xff0c;SpringBoot 也不例外&#xff0c;SpringBoot 是基于Spring 的基础上产生的。总所周知&#xff0c;Spri…

高德网络定位之“移动WiFi识别”

导读 随着时代的发展&#xff0c;近10年来位置产业蓬勃发展&#xff0c;定位能力逐渐从低精度走向高精度&#xff0c;从部分场景走向泛在定位。设备和场景的丰富&#xff0c;使得定位技术和能力也不断的优化更新。定位能力包括GNSS、DR&#xff08;航迹推算&#xff09;、MM&a…

JavaScript-字符串

字符串 正常字符串使用单引号 或者 双引号 包裹注意转义字符 \ \ \n \t \u4e2d \u#### Unicode字符 \x41 Ascll字符多行字符串编写 // tab 上面 esc下面的引号 let msg helloworld你好 console.log(msg)模板字符串 let name ht let age 5; let msg hello${name}你…

Alibaba Sentinel规则持久化-拉模式-手把手教程【基于文件】

文章目录一、拉模式架构二、原理简述三、编写3.1 加依赖3.2 写代码3.3 配置四、优缺点分析五、你可能会有的疑问六、参考文档七、案例测试7.1. 添加流控规则7.2. 服务停止7.3. 重新启动服务7.4. 调用接口7.5. 查看流控规则本文实现基于拉模式的Alibaba Sentinel规则持久化。一、…

开发者说:Seata 0.7.0 版本,你 get 'Metrics' 技能了吗?

从用户的视角来感受一个开源项目的成长&#xff0c;是我们推出「开发者说」专栏的初衷&#xff0c;即在开发者进行开源项目选型时&#xff0c;提供更为立体的项目信息。专栏所有内容均来自作者原创/投稿&#xff0c;本文是「开发者说」的第9篇&#xff0c;作者郑扬勇&#xff0…

面试时遇到「看门狗」脖子上挂着「时间轮」,我就问你怕不怕?

来源 | Why技术封图 | CSDN 下载于视觉中国之前写了一篇文章&#xff0c;有一个小节中写到这样一段话&#xff1a;于是就有读者来问了&#xff1a;老哥&#xff0c;看门狗介绍一下呗。面试的时候被问到了&#xff0c;没有回答上来。听到这个问题我脑海里首先浮现出了几个问题&…

海量结构化数据存储技术揭秘:Tablestore存储和索引引擎详解

前言 表格存储Tablestore是阿里云自研的面向海量结构化数据存储的Serverless NoSQL多模型数据库。Tablestore在阿里云官网上有各种文档介绍&#xff0c;也发布了很多场景案例文章&#xff0c;这些文章收录在这个合集中《表格存储Tablestore权威指南》。值得一提的是&#xff0…

JavaScript-数组

数组 Array可以包含任意的数据类型 var arr [1,2,3,4,5,6] arr[0] // 取值 arr[0] 3 // 赋值长度 arr.length arr.length 10 // 长度是可变的注意&#xff1a;假如给arr.length 赋值&#xff0c;数组大小就会发生变化。如果赋值过小&#xff0c;元素就会丢失 获取指定字…

Alibaba Sentinel规则持久化-推模式-手把手教程【基于Nacos】

前面&#xff0c;已经为Sentinel实现了 基于拉模式的规则持久化 &#xff0c;本文来实现基于 推模式的规则持久化。 文章目录一、推模式架构图二、原理简述三、微服务改造3.1. 加依赖3.2. 添加配置四、Sentinel控制台改造五、编译 & 启动六、测试测试1&#xff1a;测试2&am…

现代IM系统中的消息系统架构 - 实现篇

序 消息类场景是表格存储&#xff08;Tablestore&#xff09;主推的方向之一&#xff0c;因其数据存储结构在消息类数据存储上具有天然优势。为了方便用户基于Tablestore为消息类场景建模&#xff0c;Tablestore封装Timeline模型&#xff0c;旨在让用户更快捷的实现消息类场景…

linux 环境 RocketMQ 4.8.0 安装、部署控制台

windows下RocketMQ下载、安装、部署、控制台 https://gblfy.blog.csdn.net/article/details/115734482 文章目录一、软件下载二、启动2.1. Linux/Unix/MacOS安装教程2.2. 验证RocketMQ功能正常&#xff08;可选&#xff09;2.3. 服务停止三、安装可视化插件3.1. github下载3.2.…

数据洪流时代,开发者这样硬核突围!

随着社会信息化的脚步加快&#xff0c;我们每个人无时无刻都在产生数据&#xff1a;刷抖音、聊微信、视频会议、点外卖……拇指轻轻一点击的背后&#xff0c;将引发意想不到的数据洪流&#xff1a;据 IDC 发布《数据时代 2025》的报告显示&#xff0c;全球每年产生的数据将从 2…

机器学习在交通标志检测与精细分类中的应用

导读 数据对于地图来说十分重要&#xff0c;没有数据&#xff0c;就没有地图服务。用户在使用地图服务时&#xff0c;不太会想到数据就像冰山一样&#xff0c;用户可见只是最直接、最显性的产品功能部分&#xff0c;而支撑显性部分所需要的根基&#xff0c;往往更庞大。 地图…