自从 YaST 团队重写了管理存储设备的软件栈以来,我们一直在定期添加和展示该领域的新功能。其中包括,在众多功能中,格式化和分区所有类型设备的无与伦比的能力,以及创建和管理 Bcache 设备的可能性。现在是时候展示另一个备受期待的功能,它刚刚登陆 openSUSE Tumbleweed:对多设备 Btrfs 文件系统的支持。

正如我们常读的读者所知,Btrfs 是一个为 Linux 设计的现代文件系统,旨在实现超越传统文件系统范围和能力的高级功能。这些功能包括子卷(独立的内部文件系统根目录)、可写和只读快照、高效的增量备份以及我们今天的特色:支持在多个块设备上分配单个文件系统。

多设备 Btrfs 一览

好的,你明白了。YaST 现在支持多设备 Btrfs 文件系统……但是,这到底意味着什么?嗯,就像听起来一样简单,可以在多个磁盘、分区或任何其他块设备上创建一个 Btrfs 文件系统。几乎就像软件定义的 RAID。事实上,你可以用它来完全取代软件 RAID。

让我们看一个例子。假设你有两个磁盘,/dev/sda/dev/sdb,并且你还在第一个磁盘上有一些分区。你可以同时在几个设备上创建 Btrfs 文件系统,例如在 /dev/sda2/dev/sdb 上,这样你将拥有如下配置。

        /dev/sda                /dev/sdb
            |                       |   
            |                       |   
     ---------------                |   
    |               |               |   
    |               |               |   
/dev/sda1       /dev/sda2           |   
                    |               |   
                    |               |   
                     ---------------
                            |   
                          Btrfs
                            |   
                            |   
                            @ (default subvolume)
                            |   
                            |   
                 -----------------------
                |       |       |       |   
                |       |       |       |   
              @/home  @/log   @/srv    ...

一旦你在多个设备上拥有文件系统,你就可以配置它来执行数据条带化、镜像、条带化 + 镜像等。基本上 RAID 可以做的任何事情。事实上,你可以配置如何单独处理数据和 Btrfs 元数据。例如,你可以决定使用数据进行条带化(通过将数据 RAID 级别设置为 raid0 值),并使用镜像进行 Btrfs 元数据(将其设置为 raid1 级别)。对于数据和元数据,你可以使用以下级别:singledupraid0raid1raid10raid5raid6

此功能与 Btrfs 子卷的结合,开启了一个几乎无限可能的世界。它基本上允许你从文件系统本身管理整个存储配置。在使用 Btrfs 的所有优势时,使用单独的工具和层(如软件定义的 RAID 或 LVM)变得多余了。

使用 YaST 分区器管理多设备 Btrfs

确实是一个有趣的功能,但从哪里开始?像往常一样,YaST 为你提供了答案!让我们看看当前正在集成到 openSUSE Tumbleweed 中的 YaST 版本将如何简化对这个很酷的 Btrfs 功能的管理。SLE 和 Leap 用户需要等到下一个版本(15.2)才能享受所有花里胡哨的功能。

首先,我们心爱的专家分区器的 Btrfs 部分已经进行了翻新,如图所示。

New Btrfs section of the Partitioner

它列出了所有 Btrfs 文件系统,单设备和多设备文件系统。你可以通过名称的格式一眼区分它们。该表包含有关文件系统的最相关信息,以及添加新文件系统以及删除和修改现有文件系统的按钮。

现有的 Btrfs 文件系统可以通过多种方式检查和修改。“概述”选项卡包括挂载点、文件系统标签、UUID、数据和元数据 RAID 级别等详细信息。可以编辑文件系统以修改某些方面,例如挂载选项或子卷。

Overview of a Btrfs file system

此外,名为“已用设备”的选项卡包含有关文件系统使用的块设备的详细列表。该列表也可以修改以添加或删除设备。请注意,只有在文件系统尚未在磁盘上存在时,才能执行此操作。从理论上讲,Btrfs 允许从已创建的文件系统中添加和删除设备,但之后需要进行平衡操作。这种平衡操作可能需要相当长的时间。因此,它已被避免在专家分区器中。

Devices of a Btrfs file system

当然,你仍然可以使用传统方式(使用该设备的“编辑”按钮)将单个设备格式化为 Btrfs。但是让我们看看添加 Btrfs 文件系统的新的按钮如何开启新的可能性。

Adding a Btrfs file system

与 RAID 对话框类似,左侧显示了可用的设备,你可以选择要在其上创建文件系统的设备,还可以指示数据和元数据 RAID 级别。当然,允许的 RAID 级别将取决于所选设备的数量。通过单击“下一步”按钮,你将进入 Btrfs 创建的第二步。在第二步中,你可以选择挂载选项并定义子卷,请参见下图。

Options for a new Btrfs file system

除此之外,专家分区器在包含多设备 Btrfs 文件系统后,还收到了一些小的改进。现在多设备 Btrfs 文件系统被视为一等公民,它们包含在常规设备列表中。请注意,“类型”列也得到了改进,以显示更有用的信息,不仅适用于 Btrfs,还适用于所有类型的设备。

Revamped list of devices

还有什么有效?

但 YaST 超越了分区器。我们还确保了存储建议(即引导设置)可以在执行新安装时处理现有的多设备 Btrfs 配置。此外,升级过程也已准备好与你的多设备 Btrfs 文件系统一起工作。

最后但并非最不重要的一点是,AutoYaST 现在也可以用来指定这种类型的 Btrfs 设置。官方 AutoYaST 文档将包含一个关于在多个块设备之上高级管理 Btrfs 文件系统的特定部分。内容目前正在 SUSE 文档团队审查中。

什么不起作用(目前)?

仍然有一个场景尚未完全覆盖。如 bug#1137997 中所述,仍然无法使用分区器中的“导入挂载点”按钮来重新创建多设备 Btrfs 布局。但别担心,它在我们的短期修复列表中!

趁热获取

自由软件开发是一个协作过程,现在我们需要你来尽你的一份力量。请测试此新功能,如果出现任何问题,请报告错误。并且请提出你的想法和进一步的改进和用例。当然,别忘了玩得开心!