前言:近年来随着国际形势剧变,中国在多个关键技术领域都面临着难题,内部需求和外部环境的变化正在加速国内操作系统的进化升级。与此同时,不少操作系统都在打造开源社区,汇聚各方力量,以此提升操作系统的话语权和地位。
随着国家层面、公司战略层面对开源的重视程度越来越高,中国开源也逐渐迎来了发展的高光时刻。作为国内领先的 DPU 企业,大禹智芯同样借助于 OpenCloudOS 这样的国内开源社区平台,推动与 DPU 相关的新型架构在标准化、兼容性等方面的高速发展。
但跟先发厂商比,国内操作系统除了技术层面的差距,生态系统的建立也依然道阻且长,我们不禁要问,国内开源社区之路又将走向何处?
以下文章内容来自大禹智芯软件研发部负责人王伟在「新一代基础软件发展与国家数字经济安全研讨会」上的分享《中国服务器操作系统开源社区发展的思考》。
本文从企业级开发者的维度,从使用者和参与者的角度出发,结合自身 DPU 的运作环境以及开发过程中遇到的问题,分析当前操作系统的发展现状与需求,进而探讨国内开源操作系统社区的业务模式和生态发展。
一、DPU的系统结构与运行环境
众所周知,DPU 是一种专门为网络数据处理而生的全新处理器类型,是继 CPU、GPU 以后的云计算第三引擎。其出现将推动计算架构从以算力为中心向以网络通讯为中心进行转变。而 DPU 作为底层基础设施组件,要完成这样技术架构的升级和革新,势必需要与上层的应用层进行衔接,同时涉及到庞大的生态协同和共建,所以开源操作系统也是 DPU 重点关注的一环。
在上图中,左图是传统服务器的结构,网络数据直接交由 CPU 处理,CPU 在处理业务的同时,还需要处理繁重的通信、虚拟化任务,使得 CPU 的有效使用率大幅度下降。部署 DPU 以后,网络数据则将首先经由 DPU,目前常见的 DPU 使用形态是通过 PCIE 接口与 Host 相连,在 DPU 上运行一个独立的操作系统,上面运行着用户以及厂商的应用软件,DPU 会针对网络、存储、安全等领域对数据做一些预处理,让应用程序更专注于处理业务逻辑。
DPU 系统结构DPU 是集芯片、硬件板卡、操作系统以及应用软件的一整套解决方案。从逻辑结构上看,DPU 拥有与主机部分相同的逻辑处理单元,甚至拥有额外的加速单元,可以说,DPU 就是一台部署在服务器内部的「服务器」。但 DPU 的集成度更高,数据处理会经过特殊调度与加速单元。DPU 也可作为 CPU 的安全壁垒,保证 CPU 的数据和网络安全。
DPU 可通过 PCIE 提供 Ethernet 和 Storage 相关功能,支持 SRIOV、VirtIO、NVMe 等标准驱动,用户通过合理的划分,将部分逻辑跑在 DPU OS 上,协同配合控制 DPU 做数据处理,因此 DPU OS 需要有和 Host OS 相同的软件兼容性,以此降低用户的开发成本。而且在 DPU OS 中,会存在一些与 CPU OS 通信的需求,因此这块也是 DPU OS 标准化的一个很重要的部分。
而对大禹智芯 DPU 来说,其应用场景可拓展至云计算、高性能组网、边缘计算等广泛领域。这里我将举以云计算领域作为例子,通过虚拟化和裸金属这两个常见的应用场景,详述下 DPU 结构里数据的流动方向和处理过程。
左图为虚拟化场景,右图为裸金属场景
虚拟化场景中,在网络虚拟化方面,Host 对虚拟机提供网络接口,Host 会通过 IOMMU 做地址空间映射,让 DPU 可以直接访问虚拟机的物理地址,这样虚拟机的数据流就可以 Bypass Host,直接与 DPU 交互,DPU 在接到网络数据后会做一些网络虚拟化方面的处理,常见的处理软件是 OVS。
在 DPU 中,OVS 分为 slowpath 和 fastpath,slowpath 软件运行在 DPU OS 中,fastpath 则运行在 DPU 的硬件逻辑中,两者相互配合从而高效地完成网络虚拟化处理。对于存储虚拟化侧,DPU 给虚拟机提供 virtio blk/Nvme 存储接口,DPU 在接到数据以后,会根据 DPU OS 运行的 Initiator 程序,选择如何与远端的存储集群通信。
而在裸金属场景 DPU 侧运行的软件与虚拟机无差别。
从例子中可以看到 DPU OS 侧会运行 OVS、DPDK、SPDK 和 Ceph RBD 等应用程序。
更广泛地来看,DPU 侧会关联许多开源应用,比如云平台相关的 OpenStack、K8s、安全相关的 SNORT、OpenSSL、SURICATA 等。而 Host 侧会有如 KVM、QEMU 等相关虚拟化软件,这里只是简单举了几个例子。实际上整个 DPU 的生态是相当复杂且庞大的,这些都需要依赖于 OS 来提供生态相关软件的运行环境。
二、企业级开发需要什么样的OS?
大禹智芯于 2022 年 6 月加入 OpenCloudOS 社区,并完成了产品的兼容互认证,通过协同技术的发展,为操作系统和软件发展的整体提质。
想了解更多信息,可扫描下方二维码,加入 OpenCloudOS 社区群。
在深度参与以及社区共建过程中,大禹智芯联合 OS 社区共同解决了一些在开发过程中遇到的问题,一类是兼容性的,一类是标准化的。
首先是不同发行版 kernel 多样化导致的驱动兼容性问题。因为内核不同版本间,一些接口结构有时候变动很大,在驱动上需要兼容不同的版本。
其次是基础库,有一些库在不同版本上也会存在接口结构兼容性问题,应用程序也需要提供不同版本库的兼容版本。除此之外,如之前提及,DPU 会有与 Host 通信的需求,因为有应用无感知的期望,所以选择走网络是不合适的。如果选择走网络,则需配置 IP 地址,为此需要一个 PCIE 物理通道加上 multi channel 协议来满足要求,对上是一个统一的平台,如果对下不同硬件厂商是私有实现,那么对于平台来说兼容性就存在很大问题,并且用户应用起来也有适配问题,因此这里需要将接口标准化,各 DPU 厂商提供统一私有驱动来实现这个逻辑。
最后是云平台结构的标准化。在传统结构中,OpenStack 的计算节点上一般会运行 nova-compute 及 ovn-controller 服务,nova-compute 主要负责调用 libvirt api 来创建及销毁虚拟机,ovn-controller 负责配置 OVS 流表,更新 neutron 端口状态。而在计算节点上使用 DPU 卡后,OVS、nova-compute 及 ovn-controller 将运行在 DPU 内置的操作系统中。
当前我们接触较多的版本主要有 redhat 和 Debian、centOS、fedora、ubuntu 以及国内发展较好的 OpenCloudOS 等,在选择版本的时候我们的关注点一般会集中在兼容性、稳定性、安全性以及功能方面。
在兼容性上,则主要包括硬件兼容性和软件兼容性。硬件上国产设备与国内的操作系统兼容性最好,软件兼容性主要是接口兼容性。
稳定性则体现在系统稳定性和接口稳定性上。系统稳定性一般会在版本发布前被充分测试,软件组件在发布前也会被大规模验证过。而接口稳定性体现在同一个版本在升级软件时,不会出现软件接口变动,从而导致操作系统上跑的系统软件需要重新适配这个版本的操作系统。
在安全性上,比如 0day 的及时更新以及如最近出现的 CentOS 转向 CentOS stream,Ubuntu 对俄罗斯停止支持等事件,都面临着不同程度的安全性挑战。
在功能方面,要求则是满足行业需求。在服务器操作系统方面,目前大家应用最多的当属 CentOS,因为 CentOS 是在 redhat 发布以后的 rebuild 版本,相当于 CentOS 的稳定性、兼容性、安全性以及功能都是和 redhat 企业版相当的,并且有独立社区支持,这对于生产环境来说,适用度较高。
但转向 CentOS Stream 以后,情况有所转变。本来 Fedora 算是 redhat 的前置版本,redhat 跑的软件都在 Fedora 上验证过,现在 CentOS Stream 变成了前置版本,并且是滚动更新的,这对稳定性和兼容性都存在一些挑战。例如,可能会存在本来一次 0day 的安全更新导致了软件接口变动,那么跑在操作系统上的软件就需要重新适配。对于一个商用产品来讲,功能确定后,对于操作系统的功能性更新需求一般没那么大,所以对于企业级开发来讲还是更倾向于一个长期稳定的版本。
从另一个层面讲,服务器的 CentOS 系统停服也造成相应的市场缺口,操作系统厂商需承接 CentOS 生态延续与技术兜底带来需求,这也为 OpenCloudOS 这样的操作系统带来了更大的潜在机遇。
三、对操作系统及开源社区的未来展望
从我个人来看,中国操作系统的发展前景广阔。首先,源是有保障的,源上提供的都是二进制程序,里面是有隐藏后门风险的,而国内操作系统都是国内的源,并且是国内社区维护的源,这个风险就没有了,并且所有代码都可经过一次安全扫描,再出对应的二进制包,代码中隐藏的一些问题,也不用那么担心。
另外一个就是国内的源的更新效率很好,并且社区由国内搭建和运营,沟通效率比国外社区更高。目前国内的几个社区产出的操作系统以及操作系统上的软件都是经过大规模生成环境验证的,因此可靠性高,同时也与国内厂商也有很好的兼容性。
国内操作系统的发展过程是源于国内 ICT 的高速发展,伴随着互联网行业掀起的热潮,这一过程中大量的软件人才聚集进入,深度参与并贡献了众多开源软件,也有催生很多自有的软件开源。国内不少厂商由于自身场景的高复杂度,也都有自己维护的一个内部操作系统版本,随着开源文化的逐步普及,各厂商也开始选择把自维护的操作系统贡献出来,由此形成了国内几大开源操作系统社区。
目前,一些国内能力很强的社区发展非常迅速,这说明国内开源环境和开发能力都是不错的,但也带来了一些问题。比如社区多样化导致的兼容性挑战,从一个硬件厂商的视角来看,对于不同源社区,不同的 kernel 版本,意味着硬件驱动需要兼容这些不同的内核版本,应用程序也存在不同的库版本的适配问题。另外,各操作系统有大多软件都是重叠的,每个社区单独维护,这样可能会产生一些重复的工作,造成了开发者力量的浪费。
这里我们简单梳理一下操作系统社区的结构。首先,OS 源社区会根据社区的版本理念统筹规划 OS 的发展路线,然后硬件厂商通过将驱动以及驱动依赖的框架 feature 提交给社区,以此达到硬件兼容操作系统的目的。
之后各个厂商根据自己的需求,会从源社区里选择版本,然后构建自己的验证版本,并持续将一些 feature 和 bugfix 回馈给社区。开发者会根据操作系统路线,到开源社区中选择软件版本,并选择一些 feature 做 backport,同时开发者也在不断维护选择的软件分支,并做 bugfix。因此社区的开发者会涵盖很多领域。
对于一个理想化的社区环境来讲,我们期望的是各社区支持的行业是不重叠的,维护理念是不重叠的。在维护理念方面,需要就注重功能最新和注重稳定性之间权衡。一般来说,实验室版本注重功能最新,以满足其研究需求;生产版本一般注重稳定性好,以满足生产环境。
对社区进行清晰划分可以让开发者力量充分应用到各个组件上,让某一个项目有更多的人在参与,并能够保证做着不重叠的工作。另外,社区需要有一个良性、可持续发展的商业模式,不需要借助外力就能自给自足,这样才能保证社区版可靠、稳定的质量。
依托于庞大的源社区,对于一些必要的开源项目,也可以建立一个国内分支,满足国内需求,并反馈到 upstream。当然也可以根据国内的硬件现状,开发一些个性化的内容,来统一硬件接口,以此激励中国 ICT 行业的创新。
四、小结
在开源开放的生态环境中,操作系统迅速崛起,而开放开源的核心是软件根技术创新,需要联合开发者、社区、软硬件上下游产业链企业来,共同构建多元生态。
而作为生态中的一员,大禹智芯与 OpenCloudOS 也在为推动打造共建共享、开放共赢的社区环境贡献力量,助力操作系统生态加速推进。我们也期待着国内操作系统产业实现跨越式发展,迎来真正的繁荣发展。欢迎更多开源力量加入 OpenCloudOS 社区,打造繁荣生态。
扫描下方二维码,加入社区用户群,获取技术支持,交流使用体验。
标签:DPU,操作系统,社区,开源,版本,跻身,软件 From: https://www.cnblogs.com/OpenCloudOS/p/17250939.html