关注了就能看到更多这么棒的文章哦~
Growing pains for Fedora CoreOS
By Jake Edge
June 2, 2021
DeepL assisted translation
https://lwn.net/Articles/857933/
我们上次在 12 月时谈论 Fedora CoreOS 的时候,它正被考虑变为 Fedora 的一个官方版本(an official Fedora edition)。但直到现在仍然没有发生这个变化,看起来 CoreOS 这个 "新兴版本(emerging edition)" 仍在经历一些与 Fedora 的其他版本相融合过程中的困难。如果 Fedora CoreOS 要 "毕业 "的话,还是需要先解决容器操作系统(container operating system)和更通用的发行版之间的需求差异。
Catching up
5 月中旬 Dusty Mabe 发布了一份公告,宣布 Fedora CoreOS 的 stable stream 正被修改为 Fedora 34。其中指出了一些注意事项(例如 "systemd-resolved 仍然 enabled 但并未使用")、最近新增功能、以及一些即将到来的新功能。这些都很正常,只不过 Fedora 34 是在 4 月底发布的,而 Mabe 的文章说明 Fedora CoreOS 并没有真正跟上。
事实上,正如 Tomasz Torcz 指出的那样,systemd-resolved 的改动是为 Fedora 33 做的,而其中一个即将启用的功能("缺省使用 cgroup v2")则是之前为 Fedora 31 进行的改动,后者早在 2019 年 10 月就发布了。他说,这似乎表明 Fedora CoreOS 落后于主发行版(main distribution),这可能会给用户带来困惑。所以,"Fedora CoreOS 是不是还应该使用相同的版本号,可是又不包含这个版本号对应的 Fedora Linux 的所有改动?"
但是 Clément Verna 说,Fedora CoreOS 并没有像其他 edition 一样的版本号的概念:
我想这是一个根本区别,Fedora CoreOS 没有版本号。它有 3 个 stream,stable、testing 和 next,这些 stream 基于 Fedora Linux 的某一个版本,但这应该只是大多数终端用户都不需要关心的一个细节。
此外,Fedora CoreOS 有自动更新功能,需要 "完全可靠(rock solid)",这样用户才会信任(并启用)自动更新功能。但是,直到最近为止,Docker 还没有支持 cgroups v2,所以我们主要面向 container 的发行版(很多用户依赖 Docker),不可能在不导致主要用户受害的情况下来强行推出 cgroup v2。Verna 认为,如果用户的困惑会导致他们深入调查 Fedora CoreOS 并了解它的工作原理,这实际上可能是 "一件好事"。
Neal Gompa 认为 Verna 的回答是 "一个逃避和糟糕的答案(a cop-out and a bad answer)"。他说,问题是 Fedora CoreOS(他和其他一些人将其缩写为 FCOS)工作组历来不参与 Fedora 的开发,尤其是不参与决策讨论。FCOS 经常不会及时适配 Fedora 主版本中所做的功能改动,而是简单将这些功能回滚(roll back),"这让几乎所有人都感到沮丧"。此外,不仅 FCOS 需要有稳定可靠的自动升级功能,Fedora 本身如果发生破坏性升级的话也是不可接受的,Gompa 说。
但 Verna 认为,工作组实际上已经在积极参与决策过程了。他指出有四个 GitHub issue 用来跟踪 Fedora 32-35 的改动(也就是说针对 Fedora 32 和针对 Fedora 35 的改动)中需要(或已经)纳入 FCOS 的部分。Vít Ondruch 则回答说不过大部分工作(甚至所有的)对于 Fedora 其他团队来说基本上都不了解。Verna 同意并且建议工作组应该在邮件列表等地方多发表意见。
Verna 还担心那些不向后兼容的改动。普通的 Fedora 可以在发行版的主版本升级时来进行这类改动,但 FCOS 没有这样的机会:
在 Fedora Linux 的主版本之间,是可以出现破坏性或者不向后兼容的改动的。cgroups v2 就是一个很好的例子,使用 Docker 的人不得不手动执行一些步骤来切换回 cgroups v1 从而维持他们现有的工作流程。所以如果你有机会进行主版本升级时,这种改动就可以进行了,但在 FCOS 中并没有这种机会。
Verna 提出的一个问题仍然没有得到回答:如果一个新的 Fedora 功能与另一个版本(或 emerging edition)的需求相冲突,应该怎么办?这些不同的需求要如何解决?
[……]当一个改动方案会破坏 FCOS(例如 cgroups v2)时,会发生什么?这个方案是否应该被拒绝?据我所知并非所有的改动都需要被每个 edition 都采用的。
随着 Fedora 的发展以及增加更多官方发布的版本(edition),这种情况可能会更加频繁。如果某些开发环境和社区不能快速发展,那么就很难站在新功能的最前沿,而毕竟 Fedora 的使命是成为 Linux 创新的引领者。这是 Fedora 项目今后需要解决的问题。
What's in a name
Joe Doss 也不同意 Verna 的最初回答。既然 FCOS 有 Fedora 的名字,"它应该有与每个 Fedora 版本相同的基本功能和改动"。他发现 Verna 的论点 "相当轻蔑"。Verna 表示歉意,但承认他有一个可能不被普遍认同的偏见:
我是一名开发人员,我对操作系统没有强烈的兴趣,我只是希望它能工作,并为我提供工作所需的工具。对我来说,这就是 FCOS 的魅力所在,我得到的是一个坚实的、经过测试的操作系统,它可以自动更新,而且可以正常工作,说实话,我并不关心它是基于哪个版本的 Fedora Linux 或者它有哪些功能。我想启动一个 instance、确保我的应用能够正常工作,然后就不用去管它了。
我也明白有其他类型的用户比我更关心基础操作系统本身 :-)。
Ron Olson 说,正是 FCOS 名称中包含的 "Fedora "造成了很多问题。"当我得知 Fedora CoreOS 不支持 cgroups v2 时,我很惊讶,这让我感到困惑。它既然是 Fedora,当然会有最新最棒的功能。" 他指出,在 Red Hat 公司收购 CoreOS 之前,他就已经在使用 CoreOS 了,在那些日子里,他并没有现在所有的这种更高期望。他建议也许可以考虑改名,尽管他也明白这个想法可能是无法实现的:
虽然我猜这是不可能做到的,但我还是要建议,也许可以把这个项目改名为 "CoreOS",或者像 "Bowler "之类的新名字,以表明它是它自己,是一个特别的方案,这样人们可以相应地调整一下对它的期望。
Verna 承认 Fedora 的名字确实带来了一些额外预期,他还指出 FCOS 到目前为止建立还不到两年,所以可以预料到会有一些需要解决的摩擦:
FCOS 的发布模式与 Fedora Linux 不同,我认为应该给它一些时间,一方面继续改进 FCOS 的功能,另一方面让人们更熟悉 FCOS 是什么,对它设置合理的期望。
cgroups 问题在讨论中多次出现,尽管 Colin Walters 认为这个问题早已经不是个问题了。此外,正如 Mabe 所指出的,FCOS 已经支持 cgroups v2,只是没有默认启用。在接下来的一个月里,这个情况将会得到改变,从而使 v2 可以成为未来的默认配置:
我们正在努力确保用户有一个良好的体验。Docker 用户是所有用户中的很重要的一部分。在 Docker 支持 cgroups v2 之前改变默认值的话,对当时的我们来说真的不是一个可选项。
把 Fedora CoreOS 做成一个 edition 的建议最初是希望在 Fedora 34 中实现的,但已经不可能了。这个改动的目标版本已经被推到了 Fedora 35,而追踪该变更提案的 Fedora 工程指导委员会(FESCo) issue 已于 2 月底关闭。到目前为止,还没有人向 Fedora 35 提交任何修改提议,尽管还允许有很多时间来提。这次讨论可能表明,现在做这个改变还有点早,让我们拭目以待吧。
全文完
LWN 文章遵循 CC BY-SA 4.0 许可协议。
欢迎分享、转载及基于现有协议再创作~
长按下面二维码关注,关注 LWN 深度文章以及开源社区的各种新近言论~