在 Linux 上使用 yum 设置 ZFS
创始人
2024-03-02 05:59:01
0

在 Fedora 上使用 yum 仓库来获取最新的 ZFS 特性。

我是一名 Fedora Linux 用户,我每天都会运行 yum upgrade。虽然这个习惯使我能够运行所有最新的软件(Fedora 的四个基础之一的 “First” ,它也做到了),但它也会提醒 ZFS 存储平台和新内核之间的不兼容性。

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

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

在本文中,我将演示如何设置 yum 仓库来打包 ZFS。这个方案有两个步骤:

  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 文件将被放置在 build 文件夹中。
$ git clone --branch=zfs-2.0.0-rc3  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


via: https://opensource.com/article/20/10/zfs-dnf

作者:Sheng Mao 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

相关内容

上海AI实验室创造&quo...
现代AI技术正在向着我们曾经只在科幻电影中见过的方向飞速发展。最近...
2026-01-02 20:46:16
在CentOS系统下使用y...
磁盘阵列(RAID)对于提高服务器数据的安全性和性能至关重要。在C...
2025-06-14 14:41:23
在CentOS 6.5上通...
在CentOS 6.5系统中,通过Yum包管理器安装MySQL是运...
2025-04-27 06:17:02
在CentOS系统中部署l...
在Linux系统,特别是CentOS环境下,进行网络数据包捕获与分...
2025-03-13 09:41:17
如何在CentOS中使用Y...
CentOS中使用Yum管理Autoconf的高效实践 在Cent...
2025-03-05 06:37:37
如何在CentOS上搭建邮...
2、一个域名:这可是关键,就像你的身份证号码一样,独一无二,去正规...
2025-02-21 21:18:57

热门资讯

为什么计量 IT 的生产力如此... 在某些行业里,人们可以根据一些测量标准判定一个人的生产力。比如,如果你是一个零件制造商,可以通过一个...
硬核观察 #885 苹果 AR... 苹果 AR 眼镜被无限期推迟据报道,由于技术上的挑战,苹果公司已经无限期推迟了其轻型增强现实(AR)...
值得收藏的 27 个机器学习的... 机器学习 ( Machine Learning ) 有很多方面,当我开始研究学习它时,我发现了各种各...
PHP最佳实践(译) 简介PHP是一门复杂的语言,经过多年折腾,使其不同版本之间高度不一致,有时还有些bug。 每个版本都...
8个有趣的Linux提示与技巧... 我们时不时给你带来关于Linux的提示与技巧。和这个系列保持一致,这里有8个我们从读者收到最有趣的提...
8 个提升你的隐私防护的开源密... 使用一些顶级开源密码管理器,确保你的登录凭证安全无虞。密码管理器是一项非常有用的实用程序。在你想寻找...
Helix:高级 Linux ... 说到 基于终端的文本编辑器,通常 Vim、Emacs 和 Nano 受到了关注。这并不意味着没有其他...
2020 年的 GitHub ... 距离 2020 年结束只剩下区区 24 天,我们即将结束魔幻的 2020 ,迎来新的一年,新的一年或...
开源新闻速递:openSUSE... 今日关注openSUSE 项目组的 Dominique Leuenberger 在他的周报中说:“这...
KDE4.11 Beta1 正...   KDE 项目工作组刚刚发布了 KDE Software Compilation 4.11 Bet...