如何借助openEuler 20.03 LTS版本构建企业级服务器操作系统

为使社区参与者快速使用及开发出自己的操作系统,华为服务器OS首席架构师 熊伟在华为开发者大会上详解了openEuler LTS 20.03版本的关键技术。以下为其分享的具体内容。

What is openEuler LTS release

LTS是Long Term Support版本,可以作为商业化Release的底座。openEuler中有一个社区主线,社区主线演进过程中会做出community release(社区发行版),Release版本名称是以年、月来命名,比如20.03, 20.09等,今年下半年将发布openEuler 20.09 community release,社区版本将以此节奏半年一次往前演进。

LTS版本则会选择某个社区版Release演化,openEuler 20.03 LTS release是基于2020.03版本演进.

综合来说,openEuler社区会有两种Release,一种是社区Release,另一种是LTS Release,LTS Release会选择相应的社区Release发布。LTS release可以作为商用发行版的基础。

【更新时间如下】

openEuler Community Release 一年2个发布版本

发布时间暂定于3月份和9月份。

openEuler LTS Release 每两年发布一个版本

LTS版本基于03版本还是09版本依据具体情况而定。

社区Release和LTS Release之间的关系和差异

1、社区主线欢迎任何新特性,有趣的idea,实验性质的功能,对于这些特性,可以随着社区主线进行演进和孵化,只需要遵守社区技术委员会制订的流程就可以了。

2、把社区主干上的软件集合成可以下载,安装使用的发行版是社区发行版的作用,社区Release是提供给个人开发者,爱好者等使用,鼓励新技术的使用和集成。

3、而LTS版本的软件选择和集成是要经过严格流程的,通过更为详细的测试和质量加固,使其成为一个可以被商用合作伙伴真正做商用发布的Release。

因此,如果在openEuler有更好的idea欢迎放在社区主线上,如果是相对成熟的功能和特性,可以集成到社区Release中,对于LTS则需要非常谨慎,任何往LTS版本中核入的特性必须是成熟稳定并且可商用的即社区主线、社区版本以及LTS版本之间的关系。

BUG/CVE漏洞时的管理策略

1、主线上发现的任何BUG、CVE漏洞,需要回合到社区版或者LTS版本中。

2、openEuler社区版上发现的任何问题,如果影响主线和LTS版本,也需要回合到主线和LTS版本上。

3、如果在openEuler的LTS版本上发现了相应的问题,也需要回合到主线上,或者回合到还在维护周期内的社区版本。

生命周期是一个困难的选择

生命周期是一个需要仔细权衡的选择,不同厂商,不同社区的维护周期各有不同。 一些商用企业选择长维护周期,长周期对于企业客户来讲相对比较有利,有利于业务的维护。但是如果维护周期过长,由于整个生态系统中软件的变化非常快,这将导致特性回合变得非常困难,反而会在一定程度上影响系统的质量和稳定性。

比较短的维护周期可以减少维护工作量,有利于版本快速演进,新特性的加入,但是会导致软件基线变化比较大,不利于硬件兼容性和软件兼容性的稳定。

经过综合的考虑,openEuler的社区release的维护周期定为半年,LTS版本的维护周期为四年,LTS版本的四年维护周期兼顾了版本的稳定性和社区快速演进这两个因素。为商用客户,OSV或基于openEuler发布商用的厂商提供稳定的版本基线。LTS版本维护周期内可以享受到漏洞的补丁、漏洞的回合等特性。

社区版本和LTS版本对于新特性的合入原则

对于LTS版本,允许将openEuler或者上游社区的一些特性回合到LTS版本,但是回合有一个原则,回合的功能不能破坏API和ABI。该原则是保证对于企业客户的接口稳定性,保持南向和北向的生态兼容性。

LTS的关键特征就是要维护南向和北向的兼容性生态,因此保持稳定的API和ABI是LTS版本的重要特征。

第三方厂商如何基于openEuler做自己的发行版

构建openEuler社区目的是为了帮助第三方厂商更容易的构建商业操作系统和生态系统,OSV厂商可以基于openEuler的LTS做商业OS发行版。OSV也可以选择基于社区版本来构建,甚至在主线上拉出自己的分支构建也可以。但基于LTS版本会帮助OSV节省很多的工作量,我们希望能够和OSV共同构建openEuler LTS,将LTS版本做成行业内稳固的底座。

对于OSV基于openEuler LTS做自己的发行版的两个基本的原则: 1、OSV可以基于LTS添加自己的独特特性,构建差异化竞争力。这些差异化的竞争力可以存在于厂商自己的发行版本中。

2、openEuler社区并不要求将OSV的发行版中的差异化竞争力回合到社区,但我们鼓励OSV把好的特性贡献到LTS社区,让LTS版本更稳定、具备更强大的能力。这是openEuler社区对于OSV和第三方厂商的倡议。

openEuler社区全景图

在社区主线上中会有社区的版本,在某一个社区版本之上会构建LTS版本,对于任何BUG和CVE漏洞坚持主线,版本之间双向回合,特性可以在主线上开发,演进,待特性成熟以后落实到下一个版本周期中。

【重要信息】

一年两个社区Release

两年一个LTS版本

社区版本的生命周期是半年

LTS版本的生命周期是四年。

Making OS is a truly hard job!

欢迎更多的OSV、第三方厂商投身到openEuler社区,共同把社区建设好。

openEuler LTS brief introduction

openEuler计划支持多种体系架构,这次发布的LTS版本支持两种体系架构,X86和ARM。对于体系架构来讲,openEuler社区是非常开放的,我们欢迎任何ISA、任何的体系架构加入到社区中。可以透漏的一点是,很快会有一个全新的体系架构加入到openEuler的大家庭中。

openEuler的LTS版本特性简介

对于openEuler来讲,整体是4层架构:

1、底层是芯片支持,目前是对鲲鹏和X86体系架构支持,后续还有更多的支持。

2、第二层面的是OS基础的支持,包括内核、基础库,这个层面需要做很多体系架构方面的优化和开发。

3、第三层是虚拟化层,这层对整个企业市场来讲非常重要,特别是云场景来讲非常重要,也就是通常说的IaaS底座。

4、最外层的容器层,是构成现在SaaS服务的基础。

由下至上,从芯片到内核到虚拟化到技术化到容器构成全四层的技术全栈,openEuler会关注性能、可靠性和安全这三个方面。同时会重点对这三个方面进行优化和加强,这是整体的LTS版本的特点。

What we have done on openEuler LTS release

openEuler的社区原则和LTS原则——来自于社区、回合到社区

华为公司过去十几年做了大量的开源工作,对于内核、虚拟化、容器、ARM生态等方面做了非常多的贡献,例如内核每年的patch贡献量超过3000,在全球排进了前五名。因此,对于openEuler, 我们的原则非常简单,那就是Upstream First。例如在内核中做一个特性,最终如何能合入到openEuler的版本中呢?

1、尽可能的先提交到上游内核社区中,被kernel社区所接纳,openEuler社区从内核社区pull到openEuler中,这样,相关的特性就能融入到到下一个发布版本中。因此任何特性开发建议先到最原始社区中,通过原始社区进入到openEuler社区。

2、有一些特性可能未必在短期内被社区接受,或者接纳很慢。对于这些特性,openEuler社区中会持开放态度做一些接纳,在openEuler作为特性提供给大家试用,也许这种特性在openEuler社区广泛使用后能加速被上游社区所接纳。

以上就是openEuler社区的基本开源策略。期望在国内形成这样一个氛围,鼓励参与社区,不只是openEuler,同时参与到openEuler的上游社区,共建社区繁荣。

内核:Linux世界的核心

内核是Linux中最重要的部件,没有之一。

openEuler在内核上做了非常多的工作,这里只以鲲鹏920的优化做一个例子:

1、使能ARM64的Ecosystem,如支持NICSAS controller、ROCE等设备。

2、安全方面的工作,比如ARM64下的hot patch是华为第一个在RAM生态中使能的。对于提升系统的可维护性、增强安全有非常大的作用,还有一些RAS的特性。

3、性能方面,无论是配套芯片还是应用程序,性能永远是追求的极致,内核在Spinlock、I/O、TLBI、ktask等都做了非常多的工作。

一个性能方面的例子:LTS版本中使能了Numa aware qspinlock,对一些case的性能提升可以达到50%以上,且随着核数的增加效果会越来越明显。

虚拟化:云基础

虚拟化是云的基础底座,openEuler希望能够成为最好的云的底座之一,特别是帮助鲲鹏成为优秀的虚拟化平台,虚拟化有三大基本件:KVM、Qemu、Libvirt,目前这三大件版本选择是KVM选择4.09,Qemu是4.0.1,Libvirt是5.5.0,openEuler在这三大件上除了质量增强、安全增强,也做了规格上增强,如:在鲲鹏芯片上KVM配合Qemu可以提供超大规格的虚拟机。

总体来讲,通过虚拟化团队的工作,现在鲲鹏芯片、鲲鹏服务器所拥有的虚拟化的能力完全不逊于其他任何的体系架构,以目前鲲鹏加上openEuler以及其他的软件可以构建完整的云基础平台。

容器:Cloud Native的底座

容器是Cloud Native场景下最重要的基础部件,openEuler支持诸如docker这样的主流容器引擎。但是工程师总是喜欢重新发明轮子,我们又造了一个新轮子。

全新容器引擎iSula:轻、快、易、灵

:体现在体积、资源消耗等方面相对其他容器引擎小很多,甚至可以降低50%、60%以上;

:并发启动多容器速度提升一倍以上;

:容器引擎符合CRI, OCI等标准,容易融合到现有系统中;

:iSula架构设计具备扩展性,可扩展容器网络、容器存储等,模块化的插件式设计,轻松完成定制化开发。

为什么要造一个新的“轮子”,因为我们相信容器将会run everywhere,新的iSula容器引擎目标是容器可适用于任何场景,期望打造一个从设备,到边缘计算节点,最终包含数据中心中有一个归一化的容器引擎方案。

当然,为什么再造一个“轮子”,从工程师的角度来说其实很简单,那就是:We Love To Do So,只有在不断迭代中才能使得相关的产业更进一步的快速发展。

A—Tune : 性能调优更简单

A-Tune系统将使性能调优更简单,A-Tune的目标只有两个:

1、当一个业务跑在复杂的OS之上,面临成千上万的参数,过往通过人的经验进行选择调整,既无法覆盖较大范围,也没有办法获得最优的效果,所以通过AI的引入,可以在众多参数中选择敏感参数集,通过AI训练可以找到对于特定应用的最佳参数组合,使得具体业务能够运行的更加高效,这是对于A-Tune来讲的第一个应用场景。

2、与之对应,反向还可以在已知的系统上抽取一些特征,和已经积累、训练好的模型进行匹配,如果训练参数集和业务特征匹配,将训练好的参数模型放到现有的环境中,有时会发生非常神奇的化学反应,产生和很好的效果。

安全:时刻牢记

安全是所有的厂商,特别是操作系统厂商,永远最关注的事情

1、openEuler LTS会提供自底向上,包括硬件、内核、库、基础安全设施等比较完善的安全技术能力,这是基础的安全能力。

2、LTS版本在Release之前有7+1的Security Tools进行漏洞扫描,7是我们使用的7中知名的商业工具进行扫描,1是华为自研的扫描工具,经过这些工具的扫描,能够确保在最大程度上发现现有版本的问题。

3、对于已发布版本,openEuler社区定义了非常详细的安全漏洞的捕获、解决、发布机制,该机制在openEuler社区的网站可以看到,按照相应的流程,开发者发现任何问题都可以提报漏洞,按照流程及时修复并送达到客户手里。

What expect in the future

LTS版本之后,未来还有什么

1、会有激动人心的新体系架构的支持,除计划中体系架构,欢迎其他体系架构融合到openEuler大家庭中,包含更多体系架构的支持。

2、安全是否会做的更容易、更可用?虽然LTS版本中做了非常多的安全基础设施,不可否认现在的系统中安全依然是一个问题,安全机制依然非常复杂,难以使用,能否在一定程度上解决这个问题,使得安全更加容易获得或使用,也是未来可以期待的新变化。

3、在社区中目前会尝试增强质量保障,不同开源软件的质量参差不齐,是否可以把测试、验证前推到上游社区,构建起更为强有力、追根溯源的质量保障呢?也是现在和未来要探索的事情。

4、Cloud Native:是否可以用Cloud Native的思路对传统的操作系统也做一些改造呢?相信未来openEuler的版本中可以看到新的变化。

5、未来体系架构以及芯片:核数越来越多,无论是鲲鹏芯片还是英特尔芯片会殊途同归,核数增加之后对系统架构影响非常大,操作系统当如何处理?是后续探索的核心。

6、操作系统的问题及维护尤为困难,是否有更为简单的办法处理?是否可以通过一些手段将操作系统的可用性和可维护性提升一个台阶呢?这也是我们将要做的事情。

问题的答案只有一个:Let’s Make A Try

The End:回归初心

回归到openEuler的初心,openEuler想要做什么?

Linux说过一句话“Linux Is Hard But Sexy”做操作系统Linux是比较辛苦的,但是很有意思的事情openEuler的任务是“Let Us Make Linux Easier And More Sexy Together”。

提问&解答

Q: openEuler和Cent OS是什么关系?外界传闻华为的openEuler是基于Cent OS开发的?

A:简单回答是:NO,但Linux操作系统发展二十多年,整体操作系统”长相”差不多,所以各个操作系统发行版比较类似,但业内人员如果仔细比较一下就可以发现Cent OS有着巨大差异。

一般来说有两种做操作系统的方法:

1、基于现有系统,比如CentOS做二次开发,二次构建把特性加上去;

2、从最原始的社区拿到源码,自行构建、自行打包、自行演进做操作系统。

第一种方式如同从喜马拉雅南坡登顶,而从原始社区拿来源码后自行构建体系,如同北坡登顶。南坡可以快速进入市场,兼容性比较好,这是优势,劣势是很难建立独立的体系,需要跟随对方。从北坡登顶,开始比较困难,但是把体系建立起来以后,后续演进更具有控制力,更有自由性和活力。这是和其他厂商不太一样的地方,

全世界发行版本非常多,但是商业上成功的只有四个体系,Redhat, Suse, Ubuntu, WRLinux,他们对应的开源社区是fedora, openSuse, Debian, Yacto,我们希望openEuler能够成为和这四个体系并行的第五个体系。帮助更多的厂商实现商业成功。

Q:华为主推鲲鹏,openEuler对X86的支持和优化是否会像支持鲲鹏那样完备?

A:YES and NO,YES是我们会一如既往支持X86架构,甚至包含其它第三方体系架构。No是体系架构的支持肯定需要芯片厂商的强力支持。由于众所周知的原因,我们对于X86的支持肯定会有一些局限,所以我们也欢迎intel公司能关注openEuler社区,在openEuler社区中将X86生态做到极致、做到完美。

Q:openEuler对比类似federa, Debian等开源社区优势和竞争力在什么地方?

A:这几个社区运行时间比较长,非常成熟,openEuler是非常年轻的社区,上线三个月,但是有一点openEuler是有明显优势的,对ARM体系的支持我们一定是行业内最好的。华为多年来和ARM公司一起主推ARM生态,在这方面华为是领先的。但是在其它方面,openEuler中有非常多的空白,但这些空白对于开发者和OSV来说正好是非常大的机会,我们欢迎更多开发者参与其中,越早进入社区中优先权越大,希望集合更多的爱好者、厂商、OSV、ISV共同把openEuler社区做好。

Q:openEuler是否主要针对企业用户或者服务器场景,对个人PC用户并不友好

A:首先OS本身并不具备针对桌面或者服务器,通常讲的区分是以图形界面为代表的桌面环境更适合个人用户使用,而服务器版本对桌面环境要求没有那么高。另外就是个人软件的丰富度服务器和桌面有比较大的差异。目前LTS 1.0版本专注于服务器版本,先把底座做扎实稳定,也会提供简单的图形界面,可以用它作为桌面使用。

其次,在后面开发计划中确实安排了对QT、GTK等主流基础图形库的支持,后续也会支持KDE, Gnome等主流的桌面系统。未来整个openEuler会对界面丰富度做非常多的工作。而且我们很高兴的看到一些厂商已经主动将他们的桌面系统贡献到了openEuler社区,一个拥有漂亮界面的openEuler发行版是值得期待的。

精彩直播视频回看

  • 发表于:
  • 本文为 InfoQ 中文站特供稿件
  • 首发地址https://www.infoq.cn/article/mWhvVw3ihCp1LjovimOo
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券