OpenMediaVault6安装ZFS

6,162 阅读2分钟

OMV上的ZFS安装

OMV版本:6.0.30-1 (Shaitan)

Debian版本:11 (bullseye)

zfs版本:2.1.99-1266_gd51f4ea5f

官方的ZFS安装教程

官方安装教程:openzfs.github.io/openzfs-doc…

这个教程在我的系统上并没有成功,我尝试时的zfs版本是2.1.4

由于zfs的许可证和Linux冲突,因此apt安装时是先下载源码然后编译安装,但是我的安装报错了。

于是我手动下载了zfs-2.1.4的源码自行编译,依然不成功。

编译教程参考:openzfs.github.io/openzfs-doc…

最后我尝试了zfsgit仓库最新代码,它可以运行。

编译2.1.99版本的deb

apt install build-essential autoconf automake libtool gawk alien fakeroot dkms libblkid-dev uuid-dev libudev-dev libssl-dev zlib1g-dev libaio-dev libattr1-dev libelf-dev linux-headers-$(uname -r) python3 python3-dev python3-setuptools python3-cffi libffi-dev python3-packaging git libcurl4-openssl-dev

git clone https://github.com/openzfs/zfs

cd zfs
git checkout master
sh autogen.sh
./configure
make -s -j$(nproc)

make deb

得到的deb文件:

  • kmod-zfs-5.18.0-0.bpo.1-amd64_2.1.99-1266_amd64.deb
  • kmod-zfs-devel_2.1.99-1266_amd64.deb
  • kmod-zfs-devel-5.18.0-0.bpo.1-amd64_2.1.99-1266_amd64.deb
  • libnvpair3_2.1.99-1266_amd64.deb
  • libuutil3_2.1.99-1266_amd64.deb
  • libzfs5_2.1.99-1266_amd64.deb
  • libzfs5-devel_2.1.99-1266_amd64.deb
  • libzpool5_2.1.99-1266_amd64.deb
  • python3-pyzfs_2.1.99-1266_amd64.deb
  • zfs_2.1.99-1266_amd64.deb
  • zfs-dkms_2.1.99-1266_amd64.deb
  • zfs-dracut_2.1.99-1266_amd64.deb
  • zfs-initramfs_2.1.99-1266_amd64.deb
  • zfs-test_2.1.99-1266_amd64.deb

修正deb

编译好的deb包是存在问题的,需要手动修改。

deb包的依赖关系:

图片.png

方框表示编译得到的deb,圆圈表示依赖的其他包。

可以看到其中的zfszfs-test依赖了一个名为libzfs4linux的包,而这个包应该要被libzfs5替代才对,因此要手动修改zfszfs-test

# 建立目录
mkdir build
mkdir -p extract-zfs/DEBIAN
# 解包deb
dpkg -X ./zfs_2.1.99-1266_amd64.deb extract-zfs
dpkg -e ./zfs_2.1.99-1266_amd64.deb extract-zfs/DEBIAN
# 修正Depends
vim extract-zfs/DEBIAN/control    # 将Depends中的libzfs4linux改为libzfs5
# 重新打包deb
dpkg-deb -b extract-zfs build

mv ./build/zfs_2.1.99-1266_amd64.deb ./

zfs-test包由于并不需要安装,因此没必要修改。

安装zfs

apt install ./libnvpair3_2.1.99-1266_amd64.deb \
./libuutil3_2.1.99-1266_amd64.deb \
./libzpool5_2.1.99-1266_amd64.deb \
./libzfs5_2.1.99-1266_amd64.deb \
./kmod-zfs-5.18.0-0.bpo.1-amd64_2.1.99-1266_amd64.deb \
./zfs_2.1.99-1266_amd64.deb

modprobe zfs

验证安装

zpool version
lsmod | grep zfs

模块自动加载

默认情况下zfs模块不会开机自启,因此需要修改/etc/modules

vim /etc/modules    # 添加一行,内容为:zfs

修改后:

# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
zfs

openmediavault-zfs插件的安装

我尝试了使用OMV的浏览器管理界面安装插件,但它底层也是通过apt工具安装zfs-dkms包,而这种方式是已经确认不可行的。

因此要手动下载openmediavault-zfsdeb包,并进行依赖修正。

apt install -d openmediavault-zfs
cp /var/cache/apt/archives/openmediavault-zfs_6.0.9_amd64.deb ./

依赖修正的步骤同上,该deb包的Depends被修正为:

Depends: libzfs5, pve-headers | linux-headers-amd64, openmediavault (>= 6.0.12), kmod-zfs-5.18.0-0.bpo.1-amd64, zfs

最后重新dpkg-deb打包,并通过apt本地安装。

PS

以上教程基于我本人的机器环境,实际运行请参考自身实际情况。