在 Linux 上使用 yum 设置 ZFS

使用 yum 仓库来利用 Fedora 上最新的 ZFS 功能。
49 位读者喜欢这篇文章。
Puzzle pieces coming together to form a computer screen

Opensource.com

我是一名 Fedora Linux 用户,每天运行 yum upgrade。虽然这个习惯使我能够运行所有最新的软件(Fedora 的四大基石之一是“第一”,并且它也确实如此),但它也突显了 ZFS 存储平台与新内核之间的任何不兼容性。

作为一名开发者,有时我需要来自最新 ZFS 分支的新功能。例如,ZFS 2.0.0 包含一个令人兴奋的新功能,可以大大 提高 ZVOL 同步性能,这对于作为 KVM 用户的我来说至关重要。但这意味着如果我想使用 2.0.0 分支,我必须自己构建 ZFS。

起初,我只是在每次内核更新后从其 Git 仓库手动编译 ZFS。如果我忘记了,ZFS 将在下次启动时无法识别。幸运的是,我很快学会了如何为 ZFS 设置动态内核模块支持 (DKMS)。然而,这个解决方案并不完美。首先,它没有利用强大的 yum 系统,该系统可以帮助解决依赖关系和升级。此外,使用 yum 在您自己的软件包和上游软件包之间切换非常容易。

在本文中,我将演示如何设置一个用于打包 ZFS 的 yum 仓库。该解决方案包含两个步骤

  1. 从 ZFS Git 仓库创建 RPM 包
  2. 设置一个 yum 仓库来托管这些包

创建 RPM 包

要创建 RPM 包,您需要安装 RPM 工具链。Yum 提供了组来捆绑安装这些工具

sudo dnf group install 'C Development Tools and Libraries' 'RPM Development Tools'

在安装完这些工具之后,您必须安装所有必要的软件包,以便从 ZFS Git 仓库构建 ZFS。这些软件包属于三个组

  1. Autotools,用于从平台配置生成构建文件
  2. 用于构建 ZFS 内核和用户空间工具的库
  3. 用于构建 RPM 包的库
sudo dnf install libtool autoconf automake gettext createrepo \
    libuuid-devel libblkid-devel openssl-devel libtirpc-devel \
    lz4-devel libzstd-devel zlib-devel \
    kernel-devel elfutils-libelf-devel \
    libaio-devel libattr-devel libudev-devel \
    python3-devel libffi-devel 

现在您可以开始创建自己的软件包了。

构建 OpenZFS

OpenZFS 提供了出色的基础设施。要构建它

  1. 使用 git 克隆仓库,并切换到您希望使用的分支/标签。
  2. 运行 Autotools 以生成 makefile。
  3. 运行 make rpm,如果一切正常,RPM 文件将放置在构建文件夹中。
$ git clone --branch=zfs-2.0.0-rc3 https://github.com/openzfs/zfs.git zfs 
$ cd zfs 
$ ./autogen.sh
$ ./configure
$ make rpm 

设置 yum 仓库

在 yum 中,仓库是一个服务器或本地路径,其中包含元数据和 RPM 文件。使用者设置一个 INI 配置文件,yum 命令会自动解析元数据并下载相应的软件包。

Fedora 提供了 createrepo 工具来设置 yum 仓库。首先,创建仓库并将 ZFS 文件夹中的所有 RPM 文件复制到仓库。然后运行 createrepo --update 以将所有软件包包含在元数据中

$ sudo mkdir -p /var/lib/zfs.repo 
$ sudo createrepo /var/lib/zfs.repo 
$ sudo cp *.rpm /var/lib/zfs.repo/ 
$ sudo createrepo --update /var/lib/zfs.repo 

/etc/yum.repos.d 中创建一个新的配置文件,以包含仓库路径

$ echo \
"[zfs-local]\\nname=ZFS Local\\nbaseurl=file:///var/lib/zfs.repo\\nenabled=1\\ngpgcheck=0" |\
sudo tee /etc/yum.repos.d/zfs-local.repo 

$ sudo dnf --repo=zfs-local list available --refresh 

最后,您已到达旅程的终点!您拥有一个可工作的 yum 仓库和 ZFS 软件包。现在您只需要安装它们

$ sudo dnf install zfs 
$ sudo /sbin/modprobe zfs

运行 sudo zfs version 以查看您的用户空间和内核工具的版本。恭喜!您已经拥有了 适用于 Fedora 的 ZFS

接下来阅读
标签
User profile image.
Sheng 提倡使用开源技术进行自托管,并且是分布式系统、虚拟化和文件系统技术的忠实爱好者。他在医疗影像软件行业工作。

评论已关闭。

© . All rights reserved.