存储重构:专家分区工具

几个月来,您一直在阅读关于管理存储设备的新堆栈以及它将为安装带来哪些新功能和改进。但到目前为止,还没有办法查看和微调这些设备的信息。在本次冲刺中,我们实现了 YaST2 专家分区工具的新版本原型,这个强大的工具可以通过 yast2 storage 命令调用。

为了使过渡更轻松,并尽快将其提交到 Tumbleweed(希望在几个月内,与新的堆栈的其他部分一起),我们决定推迟任何 UI 重新设计。因此,这个新专家分区工具的第一版看起来和行为方式与当前 (open)SUSE 版本中的完全一样。

要试用它(在测试机器上!),请添加一个仓库并删除当前的存储库,如 yast-storage-ng: Trying on Running System 中所述,然后运行 zypper install yast2-partitioner。正如您可能注意到的,我们将分区工具拆分为一个单独的软件包,与当前版本作为基本 yast2-storage 的一部分不同。

新的专家分区工具只会为您提供类似于以下屏幕截图的只读视图,目前还无法修改任何内容。

New expert partitioner - hard disks list

如您在自己的系统或屏幕截图中看到,以下项目已经可用

  • 硬盘及其分区
  • 逻辑卷管理器 (LVM) 的卷组、逻辑卷和物理卷

目前,您在导航树中看到的其他类型的设备只是占位符。

New Expert Partitioner - logical volume overview

您可能会对此感到有点失望,没关系,因为我们在此次投入的大部分精力实际上隐藏在一组漂亮的 UI 类中,我们使用这些类来重建遗留的程序化 UI 代码。因此,新的专家分区工具不仅依赖于改进后的存储堆栈,还依赖于强大且可重用的 UI 组件集。如果您需要为 YaST 编写用户界面,下一部分内容将对您有所帮助。

New Expert Partitioner - list of physical volumes

新的 CWM 部件

本节可能有点偏向开发人员,如果您不关心 YaST 实现细节,请随时跳过。如果您想了解新的 YaST 部件,请继续阅读。

在深入研究新的部件之前,让我们介绍一下 CWM 是什么。它代表 Common Widget Manipulation(通用部件操作),是一个旧的 YaST 程序化模块,它将一个部件、它的帮助和它的回调函数组合在一起。这些回调函数用于初始化、验证和存储部件的内容。这种组织方式允许更轻松地重用部件,然后将它们组合成一个对话框。我们还创建了 CWM 的面向对象版本,它在底层使用旧版本,但基于类。因此,内容和回调函数都位于自己的类中,然后用于对话框。它已经在 bootloader 模块 中使用。

作为专家分区工具重写的一部分,我们创建了新的可重用部件类型,例如 TableTree,现在可以在任何 YaST 模块中使用。

我们还意识到,能够用较小的“积木”构建完整的对话框会很酷,因为分区工具对话框通常具有相当复杂的结构,其中一些部分由多个对话框共享。为此,我们添加了新的部件类型——一个 Page,它表示包含其他部件的对话框的一部分,以及一个 Pager,它允许切换页面。目前有两种不同的分页器。第一个是 Tabs,它显示一组选项卡并允许在它们之间切换,第二个是 TreePager,它允许根据树中选择的项目切换页面。

如专家分区工具中的屏幕截图所示,左侧有一个树,它决定了右侧显示哪个页面。右侧有时包含一组选项卡,它决定了每个选项卡上显示的内容。

构建块万岁!

YaST Kdump 命令行中添加了内存高分配的支持

YaST 界面中已经实现了 Kdump 启用期间分配内存高的新选项,但命令行中不可用。从下一个服务包(即 SLES 12 SP3、Leap 42.3 和 Tumbleweed)开始,用户也将能够在命令行和脚本中使用此选项。为此,您只需使用命令 yast2 kdump enable alloc_mem=low,high,其中 low 设置 Kdump 低内存,high 设置 Kdump 高内存。

对于当前 Kdump 命令行用户,启用 kdump 的旧命令 yast2 kdump enable alloc_mem=$mem 仍然有效,保持其兼容性。

正确处理可选的文件系统包

在安装过程中,当 YaST 检测到系统中需要额外的软件包才能处理特定文件系统或技术时,它会提醒用户并尝试安装这些软件包。一个非常明显的例子是 ntfs-3gntfsprogs 包,当在系统中找到 MS Windows 分区时会安装它们。

但是,如果这些软件包根本无法安装怎么办?这就是 SLE12-SP3 的情况,它不包含 ntfs-3g。安装程序是否应该因为这个原因而阻止安装 SLE12-SP3 以及现有的 MS Windows?

幸运的是,我们解决了 SLE12-SP3 的问题……并且创建了代码基础设施以避免将来的类似问题。现在我们有一个单独的列表,用于那些安装以处理特定技术很好,但不是 100% 强制性的软件包,以至于如果它们不可用则会阻止安装过程。所以我们不会打扰用户无法解决的事情。

YaST 远程命令行中解决的问题

除了展望未来,我们还会继续关注现有的 YaST 模块及其支持的场景。在此次冲刺期间,我们还解决了与使用命令行时 YaST Remote 相关的一些问题。

命令 yast2 remote list 正在安装 YaST Remote 所需的软件包,并正在重新启动显示管理器。但是,由于此命令预计是一个只读操作,因此不应更改系统中的任何内容。已解决此问题,现在此命令仅列出远程选项的状态。

另一个问题在于命令 yast2 remote allow=yes,它会弹出一个界面来提醒用户系统中的更改。此弹出窗口妨碍了在脚本中使用此命令。因此,我们在命令行中执行 YaST Remote 时删除了它,而是我们在控制台上显示一条警告消息。

这两个修复程序都作为维护更新提交到所有受支持的 SLE 和 openSUSE 版本,并将尽快到达我们的用户,只要它们通过各自维护团队执行的所有额外的安全检查。当然,这两个修复程序也将包含在未来的版本中。

存储重构:简化操作摘要

专家分区工具并不是我们在本次冲刺期间对新的存储堆栈所做的唯一事情。我们还尝试改进信息在各处呈现给用户的方式。

一目了然的大量信息在某些情况下可能很有用……只要大脑能够处理这些信息!由于我们不希望所有用户都是机器人,因此我们决定改进我们的存储操作摘要。现在更容易理解在按下确认按钮后磁盘上将发生什么。

他们说一张图胜过千言万语。所以让我们比较本次冲刺之前的超详细列表……

Summarized actions: before

……与新的摘要版本。

Summarized actions: after

如您所见,新的摘要以清晰易读的方式传达了基本信息。删除操作以粗体突出显示,此外,与 btrfs 子卷相关的操作集分组在一个可折叠列表中。

Summarized actions: extended view

AutoYaST 与新存储的集成也在此次冲刺中受到了我们的关注。现在,AutoYaST 中的摘要对话框以新的紧凑方式显示存储操作列表。目前无法从这个 AutoYaST 对话框编辑分区,但请关注即将到来的冲刺中的更多信息。

Summarized actions: AutoYaST

AutoYaST:在创建较小的分区时警告用户

您已经知道 AutoYaST 在自动化基于灵活配置的复杂安装方面的强大功能,即使配置文件包含难以在目标系统上实现的某些部分,它也会尽最大努力。

这些调整之一是 AutoYaST 可以减少提供的配置文件中指定的一些分区的大小,如果目标磁盘不够大,以确保安装不会仅仅因为缺少空间而阻止。

该机制工作得很好,但这种自动调整可能会出乎意料并产生不良结果。因此,我们添加了以下警告消息。

AutoYaST: alert user about adjusted partititions

当然,新的警告使用标准的 AutoYaST 报告机制,因此即使用户不在屏幕前(在执行无人值守安装时非常常见),他们也会收到有关特殊情况的通知。

Docker,Docker 无处不在!

现在,再来一份技术内容,献给那些喜欢窥探厨房的人。

冲刺 30 的报告 中,我们已经描述了如何采用 Docker 来为我们仓库主分支(用于开发 Tumbleweed 和即将推出的产品)中的持续集成过程提供支持。正如 也报道的那样,我们在下一个冲刺中为 Libyui 采用了相同的解决方案。现在轮到我们用于维护已发布产品版本的 YaST 分支了。考虑到 YaST 分割成的许多仓库以及我们提供的许多维护产品,这不是一项简单的任务。

如果您想重温有关使用 Docker 进行持续集成基础设施的整个主题,可以在几天前在 openSUSE Conference 2017 上观看 Ladislav 提供的演讲。

存储重构:完全支持 DASD 设备

如果您周围没有 S/390 主机,您可能不熟悉 DASD(直接存取存储设备)的概念。DASD 在主机中基本上用作常规磁盘……只是它们不是。

DASD 在各个方面都是特殊的磁盘——它们具有不同的分区表类型,仅允许三个分区,并且具有受限制的分区 ID 集,必须由不同的分区工具进行管理,它们具有自己的特定对齐逻辑和要求……

但是,由于 YaST 和 libstorage,在 (open)SUSE 中,您无需关心这些细节中的大部分。专家分区工具和安装程序允许您将 DASD 几乎视为常规磁盘。

在此次冲刺中,我们调整了新的 libstorage,即堆栈中基于 C++ 的库层,使其能够处理 DASD。与库中实现的新功能一样,我们拥有的唯一“屏幕截图”是库生成的图表之一。请享受。

DASD support: the example graph

更多内容即将到来……很快

我们希望对我们的开发工作有一个更短、更敏捷的反馈循环。为了实现这一目标,我们决定将 Scrum 冲刺从当前的三个星期缩短到仅仅两个星期。因此,您将在半个月内收到更多来自我们的消息。

但反馈循环是双向的,因此我们也希望收到更多来自您的消息。:smiley: 很快再见!