像往常一样,storage-ng 是本次冲刺的明星之一,但即将发布的 SUSE/openSUSE 版本的新安装程序功能也受到了很多关注。此外,CaaSP 2.0 也得到了我们的支持。

storage-ng:Udev 映射和 ARM64 支持

新的存储层正在变得越来越好。在重构的大量工作之后,团队正在努力释放新设计的强大功能。

Udev 映射回归

引导加载程序模块支持使用 Udev 提供的持久设备名称。这是一个非常有用的功能,在许多情况下都很有用,但它在基于 storage-ng 的模块版本中缺失。

但别担心:这个功能已经重新实现,利用了新的存储层改进的 API。而且不止这些:团队也借此机会清理了一些代码,并以适当的方式记录了选择 Udev 设备名称的策略。

想了解更多细节吗?这里有它们。让我们从我们支持的场景开始

  • S1:包含启动配置的磁盘移动到另一台机器
  • S2:磁盘损坏,其内容从备份加载到新磁盘(因为你有备份,对吧?)
  • S3:磁盘路径中断并移动到另一个

鉴于这些场景,让我们看看策略

  • 如果设备具有带有 mount_by 的文件系统,则不要更改它。
  • 如果设备名称包含 by-label,则直接使用它。这种行为使我们能够处理这三种场景。
  • 如果有 by-uuid,则使用它。它也可以处理这三种场景。
  • 如果有 by-id,则使用它。它可以处理 S3,但不总是。
  • 如果有 by-path,则使用它。这是受支持的最后一个 Udev 符号链接,至少可以防止在启动期间更改名称。
  • 作为回退,只需使用内核名称(例如,/dev/sda3)。

storage-ng 现在也适用于 ARM64

在相当长的一段时间里,storage-ng 代码已经在 x86_64ppc64s390x 架构上进行了测试(并且工作正常)。现在,我们添加了 aarch64 以匹配 SUSE Linux Enterprise 和 openSUSE Leap 中支持的架构列表。

加速服务管理器启动

如你所知,YaST 包含一个用于管理 systemd 服务的不错模块。与 systemadm 相比,后者包含在 system-ui 包中,存在一些关键差异

  • 它仅显示服务,不显示其他单元类型,例如套接字。
  • 它可以为下次启动启用/禁用它们。
  • 它像任何 YaST 模块一样,可以在文本模式下工作(即使在 80×25 终端上)。

一段时间前,我们收到了一份报告,称在某些情况下呈现的信息不准确。我们修复了它,但同时也使该模块变慢了。很快就有人报告了这一点。

我们测试了以下场景:286 个服务(SUSE Linux Enterprise 12 SP3,几乎安装了所有软件模式)在一个不太快的虚拟机上。通常,你应该有更少的服务,可能系统也更快,但我们想修复即使在最坏的情况下也能解决的问题。

在分析问题之后,我们发现根本原因:对 systemctl 的调用过多,至少每个服务 3 次 (showis-activeis-enabled)。对于每次调用,几十分钟的时间累积起来很快。

解决方法是将所有 show 调用合并为一个,并正确解释 ActiveState 属性以消除所有 is-active 调用。但你想知道数字,对吧?修复后,启动时间从 69 秒减少到 15 秒(请记住,这是一个慢速虚拟机)。

因此,即使你的系统不慢或者安装的服务较少,你仍然可以受益于该模块更快的启动时间。

多仓库介质

YaST 中有一些隐藏的宝石,可能不太为人所知,但它们已经存在很长时间了。其中一个功能是支持多仓库介质。

什么是多仓库介质?想象一下带有多个独立仓库的 CD 或 DVD。优点是,如果你想发布多个附加组件,可以将它们全部放在一个 DVD 介质上。真是好东西,不是吗?

到目前为止,YaST 会自动添加介质上找到的所有仓库,而无需任何用户交互。在此冲刺中,我们添加了一个新的对话框到工作流程中,询问用户应该使用哪些仓库。当然,如果只有一个仓库,询问没有意义,仓库会自动添加。

Selecting which add-ons should be installed

CaaSP 2.0 的 i18n 支持

2017 年 6 月,SUSE 发布 了有前途的 SUSE CaaS(容器即服务)平台 的第一个版本。YaST 团队通过向安装程序添加几个新功能(例如 一键安装屏幕)积极参与了这个项目。

CaaSP 的第一个版本仅提供英文。但是,即将发布的 2.0 版本将支持更多语言。对于 YaST 团队来说,这意味着我们需要将语言选择器添加到
安装程序中,如图所示,并将 yast2-caasp 中的每个字符串标记为可翻译。

YaST2 CaaSP features a language selector

最后,如果你对 CaaSP 感兴趣,也许你还想查看 Kubic,其 Tumbleweed 基于的变体。

更多错误修复

除了新的闪亮的东西之外,YaST 团队还能够在本次冲刺中修复一些问题。让我们看看其中的一些。

关注小细节

Not enough space for device name

可用性对于 YaST 这样的项目来说是一个关键点。时不时地,我们会收到一份关于需要解决的可用性问题的错误报告,我们非常重视这些报告。在这种情况下,引导加载程序模块在显示对话框中的长设备名称时存在问题,以更改磁盘的顺序。所以我们只需要进行一个小小的修复来确保有足够的空间。

Device name is shown properly

请继续报告你发现的与可用性相关的问题,以便使 YaST 更好。

修复 INSECURE 模式

听起来很可怕,但 YaST 在安装过程中支持 insecure 模式。这意味着什么?YaST 在系统安装方面非常灵活。你作为用户有权修改/调整安装程序(使用驱动程序更新磁盘),添加自定义仓库等。有时跳过某些检查会很有用。

一段时间前,libzypp 引入了一个新的回调来报告无效(或丢失的)GPG 签名。这个回调被 AutoYaST 正确处理,但在常规安装中被忽略,因此即使在 insecure 模式下,用户始终会收到签名失败的警告。

现在问题已修复,如果你想这样做,可以以 insecure 模式运行安装程序。

了解 FCOE

YaST 处理很多活动部件,虽然对于新手来说可能令人望而却步,但它也有一个光明的一面:我们定期学习新的东西来玩。

在这种情况下,我们的工程师之一 Martin Vidner 必须处理与 YaST 中 以太网光纤通道 支持相关的修复。但 Martin 没有盲目地应用我们已经拥有的补丁,而是决定更多地了解这个主题,并在自己的博客上分享 他的发现。将来,它肯定会是一个有价值的资源。