DIY NAS系列03 — 安装 ZFS 文件系统

了解 DKMS 与 KABI

在部署 ZFS 文件系统之前,我们先来了解一下 DKMS 与 KABI。DKMS(Dynamic Kernel Module Support)和 KABI(Kernel Application Binary Interface)都是 Linux 中关于内核模块的重要概念,对于支持和维护诸如 ZFS 这样的文件系统非常重要。

  1. DKMS:Dynamic Kernel Module Support,是一种框架,用于生成 Linux 内核模块,其目标是创建一个开源的系统,以便在新内核发布时,无需手动重新编译每个模块。对于 ZFS,这意味着每当内核更新时,ZFS 内核模块可以自动重建和重新加载,而无需手动干预。这极大地简化了内核升级的过程,使得维护者可以更方便地使用和升级 ZFS。
  2. KABI:Kernel Application Binary Interface,是内核为用户空间程序提供的稳定的二进制接口。保证 KABI 的稳定性对于在内核版本升级时确保模块兼容性是非常重要的。对于 ZFS,如果 ZFS 与 KABI 紧密集成,那么在内核升级时,ZFS 可以持续工作,而无需等待特定版本的内核模块可用。

总的来说,DKMS 和 KABI 都是为了使内核模块(如 ZFS)能够与 Linux 内核平滑地交互,尤其是在内核升级时。它们为开发者、维护者和最终用户提供了更大的便利性和灵活性,使得使用和升级 ZFS 变得更加简单和安全。

安装 ZFS

# 启用 EPEL(企业 Linux 的额外软件包)存储库
dnf install epel-release -y

# 从官方 OpenZFS 存储库 安装 ZFS 包
dnf install -y https://zfsonlinux.org/epel/zfs-release-2-3$(rpm --eval "%{dist}").noarch.rpm

# 默认情况下,ZFS 存储库提供 DKMS 包,为确保您使用的是 DKMS 存储库,您可以运行以下命令:
dnf config-manager --enable zfs

# 在安装 ZFS DKMS 包之前,您需要安装必要的开发工具和内核开发头文件。下面两条命令是安装基于 DKMS 的 ZFS 包所必需的,因为它涉及从源代码构建 ZFS 内核模块,这需要特定的开发工具和内核头文件。
dnf groupinstall "Development Tools" -y

# 删除旧内核开发工具,因为删除的时候会删除openssl-devel,所以在安装新的kernel-devel之前,先安装openssl-devel
dnf remove kernel-devel

# 安装kernel-devel,必须与现有内核版本一致
dnf install openssl-devel
dnf --disablerepo=\* --enablerepo=elrepo-kernel install -y kernel-lt-devel.x86_64

# 安装 zfs-dkms
dnf install zfs-dkms -y

# 默认情况下,ZFS 存储库提供 DKMS 包。要使用 kABI-tracking kmod 包,您需要禁用 DKMS 存储库并启用该 kmod 存储库。
dnf config-manager --disable zfs
dnf config-manager --enable zfs-kmod

# 执行此命令可能需要几分钟时间,具体取决于您的系统性能。
dnf install zfs -y

# 加载 ZFS 内核模块
modprobe zfs

# 检测是否加载成功
[root@localhost ~]# lsmod | grep zfs
zfs                  4046848  0
zunicode              339968  1 zfs
zzstd                 593920  1 zfs
zlua                  192512  1 zfs
zavl                   20480  1 zfs
icp                   331776  1 zfs
zcommon               114688  2 zfs,icp
znvpair               118784  2 zfs,zcommon
spl                   126976  6 zfs,icp,zzstd,znvpair,zcommon,zavl

# 配置开机自动加载
echo "zfs" | sudo tee /etc/modules-load.d/zfs.conf

现在,你已经成功在 Rocky Linux 9 上部署了以 DKMS 为基础的 ZFS 套件。拥有这个套件意味着,每当内核更新时,ZFS 内核模块都会自动进行重新编译,以此确保在各个内核版本间保持优良的兼容性。

写在最后

至此,我们已经成功在系统上部署了 ZFS,为我们的数据管理奠定了坚实的基础。然而,理解和使用 ZFS 的旅程还远未结束。接下来,我们将进入到下一个重要的步骤 – 存储池管理。这将是我们对 ZFS 进一步深入探索的重要一步,让我们一起期待接下来的学习旅程吧。

下篇预告: DIY NAS系列04 — ZFS 存储池管理

用一杯咖啡支持我们,每一篇 [技术博文] 都经过我们实操,并非从网上一味的copy,期间花费了大量的心思,希望能够帮忙到您。

评论

  1. xray
    1月前
    2023-8-18 14:27:00

    根据指引步骤安装完zfs后,执行“modprobe zfs”内核模块加载时提示:modprobe: FATAL: Module zfs not found in directory /lib/modules/6.1.45-1.el9.elrepo.x86_64
    请问是哪里出错了;
    烦请指导,谢谢!

    • 博主
      xray
      1月前
      2023-8-19 9:52:23

      查看内核版本:
      [root@demo ~]# uname -r
      6.1.33-1.el9.elrepo.x86_64

      查看dkms状态,确保内核版本是一致的,如果你正在使用 DKMS,确保你已经安装了与你的内核版本匹配的内核头文件。这对于 DKMS 构建内核模块是必要的。
      [root@demo ~]# dkms status
      zfs/2.1.12, 6.1.33-1.el9.elrepo.x86_64, x86_64: installed

      如果不一致,可以手动安装
      dkms install zfs/版本号

      dkms 安装
      dnf install –enablerepo=elrepo kmod-zfs
      dnf install https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm
      dnf install dkms

发送评论 编辑评论


|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇