一、
前期回顾
书接上回, https://blog.csdn.net/alwaysbefine/article/details/160787794 Linux|操作系统|zfs文件系统的使用详解
发现在虚拟机内编译产出的rpm安装包在安装的过程中还是有一些问题,比如内核版本的需求,gcc的版本要求这些,因此,重新编译了zfs文件系统的rpm安装包,重新编译产出的zfs文件系统的rpm安装包去掉了对kernel内核版本的强校验,并基于原来的测试环境的yum源,同步制作的离线yum安装zfs文件系统的源。
经过几版的改进后,现在已基本可以做到一键在centos7系统下完全离线安装完成zfs文件系统,现对如何使用此rpm包做一个详细的介绍。
通过网盘分享的文件:zfs文件系统
链接: https://pan.baidu.com/s/1hBs5xTSkaxhRVORu9AiP-g 提取码: msw7
--来自百度网盘超级会员v7的分享

只需要用到上面标红的两个文件
二、
centos7内核升级
虽然z fs文件系统的rpm安装包 将安装时的kernel内核版本检测关闭了,但如果内核版本低于4.18,仍会不能正常工作,因此,建议内核编译安装4.18以上版本
本次实验使用的是5.4.69,推测其它版本的内核应该也是没有问题的,centos7版本是7.7.1908:
bash
[root@centos1 ~]# cat /etc/redhat-release
CentOS Linux release 7.7.1908 (Core)
[root@centos1 ~]# uname -a
Linux centos1 3.10.0-1062.el7.x86_64 #1 SMP Wed Aug 7 18:08:02 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
上面提供的zfs-2.4.1-newrpm.tar.gz这个文件解压后,就放置在root目录下,将其它的yum源移除后,配置如下离线yum源:
bash
[dsfsdaf]
name=dsfdsfsd
baseurl=file:///root/zfs-rpm
enable=1
gpgcheck=0
yum源配置好后,yum makecache 缓存一下,以提高后面的使用效率
这一部分简略说一下内核升级步骤(将Linux内核源码解压后,进入该源码目录后,先移除旧的内核开发环境,然后,yum install 安装内核编译环境,生成内核编译文件,编译内核命令执行,执行完毕后设置默认内核后,重启服务器,应用新内核):
bash
yum remove -y kernel-tools kernel-tools-libs
yum install libevent libevent-devel libtool gcc gcc-c++ systemd-devel zlib-devel libuuid-devel libblkid-devel libattr-devel libtirpc-devel openssl-devel bc ncurses-devel bison elfutils-libelf-devel flex -y#内核编译的编译环境准备
cp /boot/config-$(uname -r) .config
make -j `nproc` && make modules_install && make install#编译内核命令
# 查看新内核的菜单项,内核编译后重启服务器,设置默认内核
awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg | nl
# 通常新内核(5.19.11)是第 1 项(索引 0)
grub2-set-default 0
grub2-mkconfig -o /boot/grub2/grub.cfg
等待服务器重启完毕后,查看Linux内核版本,确认内核升级完毕:
bash
[root@centos1 ~]# uname -a
Linux centos1 5.4.69 #1 SMP Sun May 17 20:10:49 CST 2026 x86_64 x86_64 x86_64 GNU/Linux
三、
zfs文件系统的rpm安装
这个安装就非常简单了,进入zfs-rpm目录后,执行如下命令安装zfs文件系统即可:
bash
yum install zfs* -y
其中部分日志如下:
bash
Transaction Summary
================================================================================================
Install 6 Packages (+29 Dependent packages)
Total size: 163 M
Total download size: 32 M
Installed size: 261 M
Downloading packages:
------------------------------------------------------------------------------------------------
Total 227 MB/s | 32 MB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : python3-libs-3.6.8-21.el7_9.x86_64 1/35
Installing : python3-pip-9.0.3-8.el7.noarch 2/35
Installing : python3-setuptools-39.2.0-10.el7.noarch 3/35
Installing : python3-3.6.8-21.el7_9.x86_64 4/35
Installing : libnvpair3-2.4.1-1.el7.x86_64 5/35
Installing : boost-system-1.53.0-28.el7.x86_64 6/35
Installing : boost-thread-1.53.0-28.el7.x86_64 7/35
Installing : daxctl-libs-65-6.el7_9.x86_64 8/35
Installing : boost-random-1.53.0-28.el7.x86_64 9/35
Installing : libpmem-1.5.1-2.1.el7.x86_64 10/35
Installing : libuutil3-2.4.1-1.el7.x86_64 11/35
Installing : boost-iostreams-1.53.0-28.el7.x86_64 12/35
Installing : 1:librados2-10.2.5-4.el7.x86_64 13/35
Installing : rdma-core-22.4-6.el7_9.x86_64 14/35
Installing : libibverbs-22.4-6.el7_9.x86_64 15/35
Installing : librdmacm-22.4-6.el7_9.x86_64 16/35
Installing : 1:librbd1-10.2.5-4.el7.x86_64 17/35
Installing : libzfs7-2.4.1-1.el7.x86_64 18/35
Installing : ndctl-libs-65-6.el7_9.x86_64 19/35
Installing : libpmemblk-1.5.1-2.1.el7.x86_64 20/35
Installing : fio-3.7-2.el7.x86_64 21/35
Installing : libzpool7-2.4.1-1.el7.x86_64 22/35
Installing : libreport-filesystem-2.1.11-53.el7.centos.x86_64 23/35
Installing : mdadm-4.1-9.el7_9.x86_64 24/35
Installing : kernel-ml-devel-5.19.11-1.el7.elrepo.x86_64 25/35
Installing : dkms-3.0.12-1.el7.noarch 26/35
Running pre installation script: /var/tmp/rpm-tmp.VcS8c1. Parameters: 1
Installing : zfs-dkms-2.4.1-1.el7.noarch 27/35
Running post installation script: /var/tmp/rpm-tmp.W9ywcl. Parameters: 1
Adding zfs dkms modules version 2.4.1 to dkms.
Creating symlink /var/lib/dkms/zfs/2.4.1/source -> /usr/src/zfs-2.4.1
Installing zfs dkms modules version 2.4.1 for the current kernel.
Sign command: /lib/modules/5.4.69/build/scripts/sign-file
Signing key: /var/lib/dkms/mok.key
Public certificate (MOK): /var/lib/dkms/mok.pub
Certificate or key are missing, generating self signed certificate for MOK...
Running the pre_build script:
checking for gawk... gawk
checking metadata... META file
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking target system type... x86_64-pc-linux-gnu
checking whether to enable maintainer-specific portions of Makefiles... no
checking whether make supports nested variables... yes
checking for a BSD-compatible install... /bin/install -c
checking whether sleep supports fractional seconds... yes
checking filesystem timestamp resolution... 0.01
checking whether build environment is sane... yes
这里说的是系统自制dkms模块,最终主要生成了zfs.ko 和spl.ko 这两个关键文件
bash
config.status: executing po-directories commands
Building module:
Cleaning build area...
make -j16 KERNELRELEASE=5.4.69..............
Signing module /var/lib/dkms/zfs/2.4.1/build/module/zfs.ko
Signing module /var/lib/dkms/zfs/2.4.1/build/module/spl.ko
Running the post_build script:
Cleaning build area...
zfs.ko:
Running module version sanity check.
- Original module
- No original module exists within this kernel
- Installation
- Installing to /lib/modules/5.4.69/extra/
spl.ko:
Running module version sanity check.
- Original module
- No original module exists within this kernel
- Installation
- Installing to /lib/modules/5.4.69/extra/
depmod.......
Installing : lm_sensors-libs-3.4.0-8.20160601gitf9185e5.el7_9.1.x86_64 28/35
Installing : sysstat-10.1.5-20.el7_9.x86_64 29/35
Installing : zfs-2.4.1-1.el7.x86_64 30/35
Installing : ksh-20120801-144.el7_9.x86_64 31/35
Installing : zfs-test-2.4.1-1.el7.x86_64 32/35
Installing : zfs-dracut-2.4.1-1.el7.noarch 33/35
Installing : zfs-kmod-debuginfo-2.4.1-1.el7.x86_64 34/35
Installing : zfs-debuginfo-2.4.1-1.el7.x86_64 35/35
Verifying : 1:librbd1-10.2.5-4.el7.x86_64 1/35
Verifying : python3-3.6.8-21.el7_9.x86_64 2/35
Verifying : boost-thread-1.53.0-28.el7.x86_64 3/35
Verifying : zfs-test-2.4.1-1.el7.x86_64 4/35
Verifying : rdma-core-22.4-6.el7_9.x86_64 5/35
Verifying : dkms-3.0.12-1.el7.noarch 6/35
Verifying : ksh-20120801-144.el7_9.x86_64 7/35
Verifying : libibverbs-22.4-6.el7_9.x86_64 8/35
Verifying : python3-pip-9.0.3-8.el7.noarch 9/35
Verifying : zfs-dracut-2.4.1-1.el7.noarch 10/35
Verifying : boost-iostreams-1.53.0-28.el7.x86_64 11/35
Verifying : libzfs7-2.4.1-1.el7.x86_64 12/35
Verifying : libuutil3-2.4.1-1.el7.x86_64 13/35
Verifying : python3-libs-3.6.8-21.el7_9.x86_64 14/35
Verifying : sysstat-10.1.5-20.el7_9.x86_64 15/35
Verifying : libpmem-1.5.1-2.1.el7.x86_64 16/35
Verifying : zfs-debuginfo-2.4.1-1.el7.x86_64 17/35
Verifying : boost-system-1.53.0-28.el7.x86_64 18/35
Verifying : fio-3.7-2.el7.x86_64 19/35
Verifying : boost-random-1.53.0-28.el7.x86_64 20/35
Verifying : zfs-dkms-2.4.1-1.el7.noarch 21/35
Verifying : 1:librados2-10.2.5-4.el7.x86_64 22/35
Verifying : daxctl-libs-65-6.el7_9.x86_64 23/35
Verifying : libpmemblk-1.5.1-2.1.el7.x86_64 24/35
Verifying : lm_sensors-libs-3.4.0-8.20160601gitf9185e5.el7_9.1.x86_64 25/35
Verifying : python3-setuptools-39.2.0-10.el7.noarch 26/35
Verifying : zfs-2.4.1-1.el7.x86_64 27/35
Verifying : librdmacm-22.4-6.el7_9.x86_64 28/35
Verifying : ndctl-libs-65-6.el7_9.x86_64 29/35
Verifying : libzpool7-2.4.1-1.el7.x86_64 30/35
Verifying : kernel-ml-devel-5.19.11-1.el7.elrepo.x86_64 31/35
Verifying : libreport-filesystem-2.1.11-53.el7.centos.x86_64 32/35
Verifying : zfs-kmod-debuginfo-2.4.1-1.el7.x86_64 33/35
Verifying : mdadm-4.1-9.el7_9.x86_64 34/35
Verifying : libnvpair3-2.4.1-1.el7.x86_64 35/35
Installed:
zfs.x86_64 0:2.4.1-1.el7 zfs-debuginfo.x86_64 0:2.4.1-1.el7
zfs-dkms.noarch 0:2.4.1-1.el7 zfs-dracut.noarch 0:2.4.1-1.el7
zfs-kmod-debuginfo.x86_64 0:2.4.1-1.el7 zfs-test.x86_64 0:2.4.1-1.el7
Dependency Installed:
boost-iostreams.x86_64 0:1.53.0-28.el7
boost-random.x86_64 0:1.53.0-28.el7
boost-system.x86_64 0:1.53.0-28.el7
boost-thread.x86_64 0:1.53.0-28.el7
daxctl-libs.x86_64 0:65-6.el7_9
dkms.noarch 0:3.0.12-1.el7
fio.x86_64 0:3.7-2.el7
kernel-ml-devel.x86_64 0:5.19.11-1.el7.elrepo
ksh.x86_64 0:20120801-144.el7_9
libibverbs.x86_64 0:22.4-6.el7_9
libnvpair3.x86_64 0:2.4.1-1.el7
libpmem.x86_64 0:1.5.1-2.1.el7
libpmemblk.x86_64 0:1.5.1-2.1.el7
librados2.x86_64 1:10.2.5-4.el7
librbd1.x86_64 1:10.2.5-4.el7
librdmacm.x86_64 0:22.4-6.el7_9
libreport-filesystem.x86_64 0:2.1.11-53.el7.centos
libuutil3.x86_64 0:2.4.1-1.el7
libzfs7.x86_64 0:2.4.1-1.el7
libzpool7.x86_64 0:2.4.1-1.el7
lm_sensors-libs.x86_64 0:3.4.0-8.20160601gitf9185e5.el7_9.1
mdadm.x86_64 0:4.1-9.el7_9
ndctl-libs.x86_64 0:65-6.el7_9
python3.x86_64 0:3.6.8-21.el7_9
python3-libs.x86_64 0:3.6.8-21.el7_9
python3-pip.noarch 0:9.0.3-8.el7
python3-setuptools.noarch 0:39.2.0-10.el7
rdma-core.x86_64 0:22.4-6.el7_9
sysstat.x86_64 0:10.1.5-20.el7_9
Complete!
此时查看zfs模块是否加载,可以看到是没有加载的,因此还需要最后一个命令
# 创建配置文件
echo zfs | tee /etc/modules-load.d/zfs.conf
该命令执行完毕后,再次重启服务器,无需手动干预,zfs模块就会自动加载好
总结:可以看到,该离线安装包完全可以独立运行,完全安装好最新版zfs文件系统,只是需要编译一个全新的Linux内核,dkms需要kernel的头文件和开发包,因此,作为依赖安装了如下软件:
bash
[root@centos1 ~]# rpm -qa |grep kernel
kernel-3.10.0-1062.el7.x86_64
kernel-ml-devel-5.19.11-1.el7.elrepo.x86_64
kernel-headers-3.10.0-1160.118.1.el7.x86_64
比较重要的依赖还有python3,其它的没有什么太特别的了,我认为该离线rpm安装包是完全可以应用在生产环境的。
好了,zfs文件系统的rpm离线方式安装部署就介绍到这里,完结撒花~!!!!!!!!!!!!!!!!