Fedora 45 中的 Anaconda 安装程序将引入一个新的存储配置选项:Stratis,一种面向本地存储管理的现代方案。

Stratis 并不是一项全新的技术,它使用 device mapper、LUKS 和 XFS 等现有工具与技术,并将它们整合成一个易于使用的软件包。其思路是在提供现代存储特性的同时,隐藏背后往往很复杂的逻辑。安装程序加入支持后,这些特性离 Fedora 用户更近了一步。

使用 Stratis 时,只需要了解两个基本结构或层级:池(pool)和文件系统。池是位于现有块设备(磁盘、分区、RAID 阵列等)之上的抽象层。一个池可以由一个或多个设备组成(例如多磁盘系统)。加密或过度置备等特性也在池这一层配置。可以在池上创建多个文件系统,这些设备将作为根卷或 home 卷使用。Stratis 还支持快照、缓存,以及针对加密池的多种解锁方式,例如 TPM 或 Clevis/Tang。Anaconda 目前不支持缓存和无口令加密,但这些可以在安装完成后启用。

Stratis 设备可以使用 stratis 命令管理。更多信息可参阅我们较早但仍然有效的文章 Getting started with Stratis,或 Stratis 项目操作指南。

使用 Web UI 安装

Anaconda 安装程序新的基于 Web 的用户界面目前还不允许为自动分区和引导式分区选项选择使用哪种存储技术。你将得到的存储布局取决于所安装的 Fedora 变体。但如果想使用 Stratis,在图形化安装中仍有办法。任何存储布局都可以使用集成到安装程序中的 Cockpit 存储模块手动创建。要进入该模块,只需在 Installation Destination 步骤选择 If none of the options above apply… 选项。

Cockpit 存储模块支持多种存储配置,Stratis 是受支持的技术之一。不要忘记,手动分区时需要创建所有必需的分区,因此首先要创建启动所需的分区(/boot,以及 /boot/efi 或 biosboot,取决于你的系统配置)。之后,只需从菜单中创建一个新的 Stratis 池。

创建 Stratis 池

在为池以及它所在的磁盘(或多块磁盘)选定名称后,可以决定是否为该池启用加密和过度置备。过度置备允许为池上创建的文件系统分配更多空间,其工作方式类似于 LVM 精简置备和 Btrfs。启用过度置备后,不必担心根目录空间耗尽而 /home 中仍有大量空闲空间,使用快照时也有更大的灵活性。另一方面,你必须清楚自己实际上并没有数 TB 的空间,需要确保磁盘空间不会真的耗尽。加密和过度置备都可以在安装后启用或禁用。

创建 Stratis 文件系统

新池创建完成后,需要向其中添加一些文件系统。你很可能希望为 / 和 /home 创建标准的两个独立文件系统,但也可以为 /var 等创建单独的文件系统。

如果在池上启用了过度置备,也可以选择不为文件系统指定大小,使用 1 TiB 的默认大小并配合过度置备;或者为文件系统设置大小上限,以防它在空间耗尽时自动增长。

使用已配置的布局

所有文件系统创建完成后,可以 Return to installation。Anaconda 会检查所创建的设备以确保满足所有要求,然后返回 Installation destination 页面,此时 Use configured storage 选项会被预选,并列出刚刚创建的设备。

安装的存储部分到此完成。可以在 Review and install 页面再次确认一切设置正确,然后开始安装。

使用 kickstart 安装

对于希望使用自动化安装的高级用户,Stratis 也提供完整的 kickstart 支持。自动分区和手动分区都可以通过 kickstart 完成。

自动分区很简单:现有的 autopart 命令可以配合 –type=stratis 使用,以全自动方式创建默认的 Stratis 存储布局。kickstart 中用于设置加密 Stratis 布局的存储部分可以如下所示:

zerombr
clearpart --all --initlabel
autopart --type=stratis --encrypted --passphrase="passphrase"

手动分区需要自下而上地手动构建整个存储布局。新增了两个 Stratis kickstart 命令:stratispool 用于创建和管理 Stratis 池,stratisfs 用于创建和管理 Stratis 文件系统。这些命令及大多数选项的用法与 kickstart 配合 LVM 进行分区的方式类似。下面是一个更高级的 Stratis 布局示例。

reqpart
part /boot --fstype=ext4 --size=500
part stratis.01 --size=1 --grow --ondisk=vda
part stratis.02 --size=1 --grow --ondisk=vdb
stratispool fedora stratis.01 stratis.02
stratisfs / --name=root --poolname=fedora --size=5000 --grow
stratisfs /home --name=home --poolname=fedora --size=1 --grow

这里我们在两块磁盘 vda 和 vdb 之上创建了一个名为 fedora 的池,并包含两个文件系统:一个名为 root,用于 /;另一个名为 home,用于 /home。–grow 告诉安装程序在创建设备时使用所有可用的空闲空间。有关这些命令的更多细节,请参阅 kickstart 文档。

结论

Anaconda 新引入的 Stratis 支持,提供了一种简便方式来利用 Stratis 提供的现代存储特性。借助通过 Cockpit 存储提供的 Web UI 支持,你现在可以方便地在系统上使用 Stratis。我们计划在未来的版本中进一步简化这一过程,并启用更多高级 Stratis 特性。

如果你遇到任何问题或有反馈,Anaconda 和 Stratis 团队都希望听到你的声音。