团队的大部分精力仍然集中在即将推出的 SUSE Linux Enterprise 15 产品系列(包括 openSUSE Leap 15)的开发上。这意味着完成并完善新的存储堆栈,实现新的丰富的产品、模块、扩展和角色生态系统(SLE15 系列的最大亮点之一),以及更多。让我们深入了解本次冲刺中最有趣的内容。

安装期间的主机名配置

让我们从一个说明用户友好 YaST 表面下隐藏的复杂性的故事开始。在安装过程中,为正在安装的机器分配一个主机名是很常见的做法,以便将来清晰明确地识别它。

通常,它是一个固定的主机名(存储在 /etc/hostname 中),但在某些情况下,最好通过 DHCP 动态设置它。从一段时间前开始(如您在 之前的报告中所读到的,如图所示),YaST 允许您选择一个具体的接口或使用名为 DHCLIENT_SET_HOSTNAME 的系统范围变量来设置主机名,该变量定义在 /etc/sysconfig/network/dhcp 中。在安装期间,该变量的值可以从分发的 控制文件中读取。最后但并非最不重要的一点,如您已经知道的,Linuxrc 也可以用来强制特定的网络配置。

YaST DHCP configuration with several network interfaces

大多数用户都有一个简单的设置,可以完美地工作,但我们最近收到了一份错误报告,指出如果在通过 Linuxrc 设置主机名配置后安装系统,网络配置不正确。经过一些研究,我们发现来自控制文件的 DHCLIENT_SET_HOSTNAME 的值会在安装结束时覆盖 Linuxrc 配置。现在已修复,并且全局变量将由 linuxrc sethostname 选项提供(如果提供)或从控制文件加载(如果未提供)。所有这些现在都发生在安装的非常开始阶段,以便用户有机会修改它,并确保用户的选择在最后得到尊重。

Setting hostname in Linuxrc

请注意,使用多个 DHCP 接口时,DHCLIENT_SET_HOSTNAME 的结果值并非完全可预测。因此,在这种情况下,我们建议显式选择期望/允许修改主机名的接口。

通过 RPM 包扩展安装过程

正如我们在最近的报告中提到过(几次),我们正在为安装程序实现多产品支持。这意味着 SUSE 将在单个安装介质上提供多个产品。

一个有趣的功能是,产品、模块和扩展可以定义自己的安装角色。例如,如果您选择桌面扩展,您将能够选择 GNOME 作为系统角色。

在本次冲刺中,我们改进了角色定义处理,根据选择的产品显示不同的角色列表。

作为副作用,我们添加了对分配显示顺序以对角色进行排序的支持。

从安装仓库获取发行说明

作为我们努力从安装介质中删除 SUSE 标签的一部分,我们改进了在安装过程中处理发行说明的方式。

发行说明是从 openSUSE 或 SUSE 网站下载的,以便始终显示最新版本。当然,安装介质包含一份副本,但该副本可能已过时,用于没有网络连接时使用。

从现在开始,我们将不再使用一些额外的文件,而是从位于软件包仓库中的 release-notes 包中检索发行说明的离线副本。因此,我们不再需要在安装介质中运送包含发行说明的额外文件了。

此外,虽然旧方法在几乎所有情况下都能很好地工作,但存在一个未覆盖的场景。让我们考虑一个可以访问更新的软件包仓库但未连接到互联网的系统。例如,如果您正在使用 SUSE Subscription Management Tool (SMT)。使用新方法,安装程序将从该仓库获取发行说明,而不是显示安装介质中包含的(可能已过时)发行说明。

此外,我们重构并清理了大量的旧代码,并提高了测试覆盖率。

存储重实现:带回更多功能

我们也在努力确保全新的 yast2-storage-ng 包含来自 yast2-storage 的所有功能,除了新的功能之外。这意味着,在本次第 44 次冲刺之后,SLE15 已经能够使用新模块执行以下操作。

  • 在专家分区器中创建 MD 软件 RAID 设备。此功能对于依赖它的许多 openQA 测试特别重要。
  • 在 SUSE CaaSP 和 openSUSE Kubic 使用的一键式安装程序屏幕上显示分区建议的紧凑描述
  • 从以前的 (open)SUSE 安装中导入用户和 SSH 系统密钥。

One-click-installer view on SUSE CaaSP 4.0 (yast2-storage-ng)

重新思考 LVM 薄配置

尝试使用所有可用空间创建薄池时,必须考虑元数据。与线性 LV 相比,薄池的元数据使用 VG 的空间。例如,如果 VG 中有 2048 GiB 的可用空间,最大尺寸薄池的元数据约为 128 MiB,池的大小约为 2047.9 GiB。

此外,LVM 会创建一个大小相同的备用元数据。此备用元数据在所有池之间共享,因此其大小等于最大的池元数据。备用元数据可以手动删除,并且所有池元数据也可以调整大小。

从一个空的 VG 开始时,考虑元数据相对容易。但是如何处理已经存在的卷组?另外请考虑包含例如 RAID LV 或缓存池(这些也具有元数据)的卷组。

我们最终决定,在探测期间,YaST 将检查 VG 有多少可用空间,然后它将为卷组计算“保留”值

reserved = total size - used by LVs the library handles - free

因此,在计算普通或薄池的可用空间时,它将考虑“保留”值

max size = total size - reserved - used by LVs the library handles

唯一的缺点是池的最大尺寸可能小于实际可能的值,因为例如备用元数据可能与已经存在的薄池共享。

更多内容即将到来

第 45 次冲刺已经开始,您可以期待更多针对 SLE15 和 openSUSE Leap 15 的安装程序工作,以及有关改进的存储堆栈的更多新闻。与此同时,别忘了玩得开心!