了解 DKMS 与 KABI
在部署 ZFS 文件系统之前,我们先来了解一下 DKMS 与 KABI。DKMS(Dynamic Kernel Module Support)和 KABI(Kernel Application Binary Interface)都是 Linux 中关于内核模块的重要概念,对于支持和维护诸如 ZFS 这样的文件系统非常重要。
- DKMS:Dynamic Kernel Module Support,是一种框架,用于生成 Linux 内核模块,其目标是创建一个开源的系统,以便在新内核发布时,无需手动重新编译每个模块。对于 ZFS,这意味着每当内核更新时,ZFS 内核模块可以自动重建和重新加载,而无需手动干预。这极大地简化了内核升级的过程,使得维护者可以更方便地使用和升级 ZFS。
- 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 存储池管理
根据指引步骤安装完zfs后,执行“modprobe zfs”内核模块加载时提示:modprobe: FATAL: Module zfs not found in directory /lib/modules/6.1.45-1.el9.elrepo.x86_64
请问是哪里出错了;
烦请指导,谢谢!
查看内核版本:
[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