我所见的欧拉操作系统 22.03 LTS

我所见的欧拉操作系统 22.03 LTS

引言

2022 年 4 月 15 日,在欧拉开发者大会上,欧拉 的首个数字基础设施全场景长周期版本 openEuler 22.03 LTS 正式发布。这是继两年前的 上一个 LTS 版本 之后发布的第一个 LTS 版本,也是在将欧拉项目 捐献 给开放原子开源基金会之后的首个社区共建版本。这个版本融合了之前的三个创新版中经过验证的新特性、新方向,来自社区的 773 名贡献者上百家厂商和用户参与了版本开发,仅仅是代码就新增了 2300 万行

作为一直关注欧拉发展的业内人士,我对这个里程碑版本期许颇高。这个版本虽然距离上一个创新版发布才仅仅半年,但是却容纳了两年来三个创新版的各种尝试和新特性,因此,想全面的了解 openEuler 22.03 LTS,可能会发现其所承载的内容十分之多,不易抓住重点。在这里,我将我所了解到的信息,梳理之后整理给大家,以使大家可以在选型、评估和使用时有所参考。

版本路线图

对于不太熟悉欧拉的同学,我这里简单介绍一下欧拉之前的发展路线:

2019 年 12 月 31 日,openEuler 正式宣布开源,其脱胎自华为内部基于 Linux 的积累。四个月后,openEuler 发布了第一个版本 20.03 LTS,它也是一个长期支持版本。

其后,openEuler 按照半年一个版本的节奏发布了三个创新版。从创新版开始,华为之外的多个公司、团队、独立开发者参与到了 openEuler 的开发当中。在这几个创新版中,提出、融入了多个值得一提的新特性,如内核热升级、内存分级扩展、千核运算能力、业务混部 CPU 调度算法等核心能力,也从面向云计算逐步拓展到支持边缘计算、嵌入式的全场景领域。

图片来源于《openEuler 22.03 LTS 技术白皮书》

这一切,在刚刚发布的 openEuler 22.03 LTS 得到了融会贯通,将在之前的创新版中经过产品环境验证和打磨的优秀特性和创新,有机的组织起来,并形成了一个统一的基础设施基座。

跨越式进步

根据官方数据,我们看到,这次的 22.03 LTS 和两年前的 20.03 LTS 相比,整体来说内容丰富了许多

比如软件包数量:20.03 LTS 官方提供的软件包, 包括 ISO 镜像中的 2016 个、EPOL 仓库中的 762 个,总计 2778 个;而在 22.03 LTS 中,软件包数量达到了 ISO 4241 个、EPOL 1329 个、oepkgs 13323,总计 18893 个!达到了两年前的 6.8 倍。

openEuler 软件包数量:20.03 vs 22.03

不只是软件包的数量,欧拉操作系统所支持的硬件架构,也从两年前的 64 位的 ARM 和 x86 架构,又增加了两个:32 位的 ARM 架构,以及国产 CPU 申威架构。曾经连续多次取得超算 TOP500 世界排名第一的中国超算神威·太湖之光中安装的就是 40960 个申威 CPU。通过支持这些架构,欧拉操作系统就可以运行在鲲鹏、英特尔、飞腾、申威、龙芯、兆芯等主流芯片之上。

而能在两年间取得这样的大跨步进展,背后是欧拉社区的“疯狂输出”。根据数据,欧拉操作系统当前已有 69891 个提交,仅 22.03 LTS 这个版本就新增了 2300 万行代码。今年以来,欧拉操作系统已经发布了 127 个安全公告,几乎平均每天发布一个。在欧拉操作系统发布以来,其已经创建了 241 个创新项目代码仓,平均每 3.5 天新增一个。而这一切,都是 773 位开发者不断努力的结果。

根据欧拉发布的 数据看板,到目前为止,欧拉已经有社区用户 479990 位,其中贡献者 8515 位,单位会员 333 家;合并请求 5 万余,评审 30 万条;成立了近百个 SIG,创建了近 9 千个代码仓

(来源于欧拉数据看板,数据时间:2022/04/20)

“终始惟一,时乃日新”

就此,我问了欧拉社区技术委员会主席胡欣蔚,“欧拉为何能做到这样大的跨越式进步?”他谦逊地表示,这只是“两年的厚积薄发”。当然,能取得这样的进展,也是在欧拉的开发和管理上,将“华为在开发和工程方面的经验”和开源运作的模式进行了结合,并得益于欧拉社区开发的一系列迁移工具。

根据公开披露的信息,欧拉操作系统在政府、运营商、金融、能源、交通、互联网等行业已达到规模应用,累计部署超过了 130 万套。2022 年,预计欧拉操作系统将在行业的应用新增超过 200 万套。

主要特性

内核和底层改进

在 openEuler 22.03 LTS 中,采用了经过长期打磨和调校的 Linux 内核 5.10 长期支持版,在这个版本中,华为向上游 Linux 内核社区提交了大量贡献。可以说,这个内核版本是华为的一个“锚定”版本。在此版本上,openEuler 融入了之前三个创新版中经过商业验证的创新特性。

图片来源于《openEuler 22.03 LTS 技术白皮书》

欧拉操作系统使用的是 Linux 内核 5.10,但除了 Linux 内核自身的特性之外,欧拉操作系统在内核中还做了十余处创新增强,主要包括用来提升性能的进程调度优化大页内存性能优化OOM 内存回收优化XDP 网络性能优化等。比如它集成了一套新的 QoS 调度机制,使得在线业务可以实现抢占式优先;而 OOM 分级使得离线业务的内存可以在欧拉操作系统中得到极速的回升,这二者结合起来,就提供了对 QoS 最强有力的支撑。又比如 UC 容错使得欧拉在面对硬件可靠性问题的时候更加有力,不再需要简单粗暴的重启,而是可以通过对于具体进程的控制,来实现错误的隔离。

除了这些隐蔽但重要的内核改进之外,如今在运维领域已经大量使用了非易失性内存(NVDIMM)存储介质,而传统的 Ext4 文件系统尚缺乏针对性的优化,因为 Ext4 本身是针对旋转式硬盘设计的文件系统。尤其在元数据管理方面,基于现有日志同步机制,其元数据管理开销大,且容易出现写放大问题,无法充分发挥 NVDIMM 优势。欧拉操作系统中集成的 Eulerfs 其创新的元数据软更新技术,减少了元数据同步开销,有效提升文件系统的系统调用性能。在单机应用、云原生分布式应用高性能数据存储场景,可以代替 Ext4、XFS 等文件系统。

在这个版本中,还吸收了鸿蒙中的分布式软总线能力,可以实现欧拉设备之间的自发现、自联通,以及欧拉和鸿蒙设备的自发现。

云计算强化

针对云原生业务混合部署场景,欧拉操作系统中创新的 QAS 算法,是一种适用于云原生场景,业务混合部署的全新调度算法,可以确保在线任务对 CPU 的快速抢占,确定性的调度运行,同时压制离线任务干扰。这些改进适用于对交互类等时延敏感型业务(比如 MySQL、Redis、Nginx 等)和 CPU 消耗重且时延不敏感的业务(如 AI 离线训练)的混合部署。

根据欧拉发布会现场的演示,一台服务器部署了欧拉操作系统 22.03 LTS 中的改进技术,而另一台没有。这两台服务器上,都同时运行相同的在线和离线两类业务。通过运行结果可以看到,在一台服务器上的 QPS 是 1.18,而另一台上达到了 2.62,相差了将近一倍;而时延分别是 1.53 秒和0.60 秒,相差也将近一倍

除此以外,欧拉操作系统还针对云计算,推出了容器化操作系统 KubeOS,实现云原生集群操作系统的统一容器化管理。它可以对操作系统进行容器化管理、对接 Kubernetes、原子化的生命周期管理;它也对操作系统进行了轻量化裁剪,减少不必要的冗余包,可实现系统的快速升级、替换等。而在底层,欧拉操作字体结合虚拟化运行时 StratoVirt、容器管理引擎 iSulad 构建了安全容器方案,较之传统的 Docker + Qemu 方案,其底噪和启动时间优化高达 40% 以上,为应用提供了一个轻量、安全的执行环境,隔离了容器和宿主机操作系统间、容器间的安全风险。

四大场景 & 五个统一

作为一款发轫于服务器领域的操作系统,欧拉在这个版本也正式支持了更多相关场景。按欧拉的话来说,就是四大场景:服务器、云计算、边缘计算和嵌入式。服务器和云计算这并不足为奇,而扩展到边缘计算和嵌入式领域,一方面是暗合了如今的计算潮流,另一方面,我认为,也和华为在边缘计算、嵌入式领域的传统优势有关。此外,作为专注于边缘计算和嵌入式等领域的鸿蒙,在这个领域和欧拉会师,我认为倒不是一种冲突,而是一种融合。

在四大场景的背后,欧拉宣称,他们做到了五个统一:统一内核、统一构建、统一 SDK、统一联接和统一开发工具。在社区开发过程中,欧拉把所有场景的所有组件的开发都归到了一个 openEuler 代码仓上,通过这种方式实现了任何场景都基于同一套代码。并且,欧拉操作系统通过 EulerMaker 项目提供了一套完整的构建和裁剪能力,这使得基于同一套代码构建的二进制,在面向不同的场景发布的时候,可以自如地进行构建和裁剪,最终形成适用于不同场景的镜像。

“功崇惟志,业广惟勤”

当然,能够在一套代码的基础上同时适应多种场景,这其中一定存在必要的取舍。胡欣蔚说,“欧拉会针对各个场景对模块/特性进行裁剪”,让各个组件、模块在不同场景能发挥各自的作用。“但是欧拉不接受只针对特定场景的定制开发,而且如果对整体架构形成冲击的话,是不会纳入到代码仓的,”他说,“欧拉会设计好这样的一套架构,使得不同组件在不同的架构下代码是归一的,通过裁剪工具,可以面向不同场景构建,并且差异化是可控的。”

在边缘计算方面,openEuler 22.03 LTS Edge 支持 KubeEdge + 边云协同框架,具备边云 应用统一管理和发放等基础能力。

而对于嵌入式领域,其镜像大小 < 5M,启动时间 < 5S,其基于 Linux 5.10 内核提供了软实时能力,中断响应时延达到看微秒级。它还支持树莓派作为嵌入式场景通用硬件。所集成的鸿蒙分布式软总线,可以实现欧拉嵌入式设备之间互联互通。

除此之外,欧拉操作系统中还有很多值得一书的改进特性,只是限于 篇幅,我们无法一一道来,大家有兴趣的话,可以参考《欧拉操作系统 22.03 LTS 的技术白皮书》。

下一代 LTS 路线图

而关于欧拉接下来两年的发展,胡欣蔚透露说:“接下来会对所支持的架构提供更多支持,包括对 RISC-V 的支持、完善对 SW 架构的支持,以及对英特尔的 Ice Lake 的完整支持和对 Sapphire Rapids 的后继规划。此外,在业务混部方面,也有很多正在进行中的创新。”这些将出现在预计今年二季度发布的 SP1 版本上。

让我们以欧拉技术委员会主席胡欣蔚的一句座右铭结尾,共同拭目以待欧拉下一步的发展:

“惟精惟一,允执厥中”

(题图及未注明出处的插图来自于 Pixbaby,采用 CC0 协议)