除了我们常规的开发冲刺报告,我们(YaST 团队)有时还会发布单独的博客文章,以总结一项新功能或展示我们正在进行的一个想法。最近,这些文章中的许多都集中在 YaST 分区器的的新功能上,例如 对 Bcache 的支持新的 Btrfs 功能。但今天轮到 yast2-storage-ng 的另一个部分:分区建议,也称为引导设置。

如您所知,YaST 是一种通用的安装程序,用于配置所有 (open)SUSE 和衍生产品。此外,安装程序选项和步骤可以通过每个产品可用的系统角色进一步完善。本博客文章的目标是提出一些想法,旨在为配置特定产品或系统角色的安装程序中的存储引导建议领域添加新的可能性。我们希望通过这样做来简化 SUSE Manager 的创建者(SUSE 用于管理软件定义的基础设施的特定目的发行版)的工作。

虽然许多呈现的功能很快就会登陆 openSUSE Tumbleweed,但它们不会默认使用。这不仅是因为它们并非针对 openSUSE 用例,而且到目前为止这只是一个原型。这意味着所有文本都可能更改,并且在最终产品中使用之前,大多数屏幕都会进行一些调整……或者它们甚至可能被完全重新设计。

一个引导建议统治它们

虽然专家分区器可用于调整任何 SUSE 或 openSUSE 发行版的存储配置,但安装程序始终会尝试提供合理的建议。此外,“建议分区”屏幕上的“引导设置”按钮会引导至一个向导,可用于配置此类建议的某些方面,如图所示(某些操作已被模糊处理,只是为了强调操作的具体列表将在每次向导执行后更改)。

Default Guided Setup wizard

引导设置的具体行为在每个产品中都不同,并且可能在每个系统角色中都不同。产品或角色的创建者可以调整许多事情,例如要建议的分区和 LVM 卷、要在向导中提供的选项、每个选项的默认值等等。但对于 SUSE Manager 及其组织存储设备独特的方法而言,所有这些可能性仍然不够。

SUSE Manager 的奇怪案例

首先,SUSE Manager 文档建议在生产环境中安装时将几个数据目录(/var/spacewalk/var/lib/pgsql/var/cache/srv)分别分配到其自己的专用磁盘。为了使这种设置有意义,在考虑到磁盘的大小和速度的情况下,为每个数据目录选择正确的磁盘至关重要。

该文档还建议在生产环境中使用 LVM。为了在使用 LVM 时实现磁盘的清晰分离,建议的方法是为每个相关数据目录设置一个单独的 LVM 卷组,而不是将所有逻辑卷分配到通常的单个共享“系统”组。

因此,虽然在仅用于评估目的的情况下安装 SUSE Manager 看起来可能有些过头,但产品的首选设置会跨越最多五个磁盘——一个包含任何 Linux 系统的常用逻辑卷的 LVM 卷组,以及每个其他磁盘包含额外的 LVM 组,每个组专门用于特定的数据目录。

最后但并非最不重要的一点是,SUSE Manager 引导设置绝不应提供保留任何磁盘上现有分区的可能性。因此,通常的问题“选择如何处理现有的 Linux/Windows/其他分区”(参见上图)甚至不应显示给用户。答案始终是“即使不需要也删除”。就这样。 :wink:

将问题分解为更小的部分

我们不想为 SUSE Manager 实现一个完全不同的引导建议。相反,我们希望将其方法背后的主要思想合并到当前的配置系统中,以便其他产品和角色可以使用它们。我们确定了三种不同的功能,这些功能被转化为任何人定义新系统角色时都可以使用的相应可选配置设置。所有新的设置都是相互独立的,可以以任何方式组合以提供完全定制的用户体验。

第一部分:每个卷的显式磁盘选择

首先,有必要支持让用户显式选择每个分区或 LVM 卷的磁盘,这与默认引导设置不同,默认引导设置会根据需求和一组“候选磁盘”自动找到分配每个分区的最佳磁盘。为了启用这一点,现在产品或角色可以选择新设置 allocate_volume_mode 的两个值。值为 auto(为了保持向后兼容性是默认值)将导致已知的最多 4 步的向导。

  • 选择候选磁盘
  • 决定如何处理现有分区
  • 配置架构(LVM 和/或加密)
  • 配置每个文件系统

与往常一样,向导通常会更短,因为在用户无需做出决定的步骤中会被跳过。

到目前为止,没有惊喜。但是 allocate_volume_mode 也可以设置为 device,这将导致显示的替代向导,如图所示。

New possible Guided Setup wizard

如您所见,没有初始步骤来选择系统用于自动分配所需分区的一组磁盘。相反,以下屏幕允许显式地将磁盘分配给每个分区或 LVM 卷组。

New step to assign volumes and partitions to disks

第二部分:强制执行关于先前分区的行为

无论配置了哪种分配模式(autodevice),在受影响的磁盘中,始终有一个步骤要求用户询问如何处理预先存在的分区。到目前为止,产品定义了这些问题的默认答案,但用户始终有机会更改该默认选项。

现在,产品或系统角色的创建者可以禁用默认情况下启用的设置 delete_resize_configurable,以防止用户修改默认行为。向导将不包含有关如何处理现有的 Windows/Linux/其他分区的问题。在大多数情况下,这将意味着向导的一个完整步骤将被简单地跳过。

第三部分:为某些目录分离卷组

每个系统角色配置的最重要的设置是所谓的 volumes 列表。该列表包括引导设置应作为单独分区或 LVM 逻辑卷创建的所有文件系统(包括强制的和可选的)。现在可以使用新的属性 separate_vg_name 指定可以将其创建在自己的单独 LVM 卷组中。如果当前产品和角色定义的任何卷包含此类属性,则选择架构的屏幕将在通常的 LVM 相关选项下方包含一个额外的复选框。

New checkbox for directories into their own separate LVM

将各个部分组合起来以用于 SUSE Manager

有了以上所有内容,我们扩展了任何想要配置 (open)SUSE 安装体验的人的工具箱。这意味着现在我们可以通过将 separate_vg_name 添加到一些卷、将 delete_resize_configurable 设置为 false 并调整 allocate_volume_mode 来满足 SUSE Manager 维护者的要求。有了所有这些,SUSE Manager 引导设置的新工作流程将如下所示。

首先,用户将能够指定创建单独的 LVM 卷组,如产品文档中建议的那样。

SUSE Manager setup - first screen

然后是第二个屏幕,用于选择应创建哪些单独的文件系统并微调每个文件系统的选项(如果有)。

SUSE Manager setup - second screen

最后一步是为每个分区或单独的卷组分配正确的磁盘,具体取决于先前屏幕上的选择。通过此步骤,用户可以通过根据 SUSE Manager 文档将磁盘分配给更快的磁盘以进行密集处理的区域,并将贪婪的目录分配给更大的设备来优化性能。

SUSE Manager setup - third screen

与往常一样,操作列表将反映用户的选择,并根据请求创建尽可能多的 LVM 结构。

SUSE Manager setup - result

超越 SUSE Manager

如前所述,在给定产品中可以以任何方式组合所有引导建议功能。例如,一个产品可以采用创建单独 LVM 卷组的方法,同时仍然坚持传统的 auto 分配模式。或者,给定的系统角色可以强制永远不要删除任何现有分区,而又不允许用户更改该设置。

但是,除了“引导设置”按钮之外,两种不同的分配模式的可用性还引发了一个想法,该想法自从 Storage-ng 引入以来一直存在——在专家分区器中添加一个“向导”部分。这将允许将一些手动步骤与执行两种可用分配模式的任何一种或与将来可以实现的任何其他工作流程结合起来……

与往常一样,我们期待对新功能或引导分区建议的任何反馈。敬请期待更多新闻!