如何解决Ubuntu LTS 20.04因HWE自动更新导致的ZFS用户空间工具与内核模块版本不匹配问题
如何解决Ubuntu LTS 20.04因HWE自动更新导致的ZFS用户空间工具与内核模块版本不匹配问题
我来给你梳理几个靠谱的方案,从最稳妥、对系统影响最小的开始说起:
方案一:升级用户空间工具匹配HWE内核的ZFS模块(推荐)
你遇到的问题本质是HWE内核更新时,ZFS内核模块跟着升级了,但用户空间工具没同步更新。Ubuntu专门为HWE栈提供了对应的ZFS用户工具包,我们可以直接安装它来匹配内核模块版本,同时还能修复那个静默损坏bug(Ubuntu已经推送了修复后的2.1.x版本)。
步骤如下:
- 先更新系统包列表,确保能获取到最新的修复版本:
sudo apt update && sudo apt upgrade - 安装HWE版本的ZFS用户工具包:
这个包会自动替换掉旧的sudo apt install zfsutils-linux-hwe-20.04zfsutils-linux,并匹配当前HWE内核的ZFS模块版本。 - 验证版本是否匹配:
输出里的用户空间工具和内核模块版本应该一致了,而且是修复过bug的2.1.x版本。zfs version
方案二:降级内核回到默认版本,匹配原有ZFS工具
如果不想用HWE的ZFS版本,也可以把内核降级回20.04默认的5.4.x版本,这样ZFS内核模块会自动回到0.8.3,和你现有的用户工具匹配。这个方案适合依赖旧内核驱动的硬件场景。
步骤如下:
- 安装默认的内核包:
sudo apt install linux-image-generic linux-headers-generic - 重启系统,在GRUB菜单的「Advanced options for Ubuntu」里选择5.4.x版本的内核启动。
- 登录后验证内核和ZFS版本:
确认内核是5.4.x,ZFS的工具和模块版本都是0.8.3。uname -r zfs version - (可选)如果想默认启动这个内核,可以编辑
/etc/default/grub,把GRUB_DEFAULT改成"Advanced options for Ubuntu>Ubuntu, with Linux 5.4.x-xx-generic",然后执行sudo update-grub生效。
方案三:从源码编译修复后的ZFS版本(不推荐,仅作为备选)
如果前两个方案都不适用,你可以选择编译最新的修复版ZFS,但这个方案需要维护源码包,后续更新也得手动操作,适合有一定运维经验的用户。
步骤如下:
- 安装编译依赖:
sudo apt install build-essential linux-headers-$(uname -r) autoconf automake libtool gawk alien fakeroot dkms libblkid-dev uuid-dev libudev-dev libssl-dev libelf-dev - 克隆ZFS源码仓库,切换到修复了静默损坏bug的版本(比如2.1.10):
git clone https://github.com/openzfs/zfs.git cd zfs git checkout zfs-2.1.10 - 编译并安装用户空间工具:
./autogen.sh ./configure --prefix=/usr --sysconfdir=/etc --libdir=/usr/lib --datadir=/usr/share --includedir=/usr/include --with-udevdir=/lib/udev --libexecdir=/usr/libexec --with-config=user make -j$(nproc) sudo make install - 编译并安装内核模块:
./configure --prefix=/usr --sysconfdir=/etc --libdir=/usr/lib --datadir=/usr/share --includedir=/usr/include --with-udevdir=/lib/udev --libexecdir=/usr/libexec --with-config=kernel make -j$(nproc) sudo make install - 加载新模块并验证版本:
sudo modprobe zfs zfs version
重要注意事项
- 不管选择哪个方案,操作前一定要备份重要数据!ZFS版本变更涉及内核模块和文件系统,存在一定风险。
- 方案一中,ZFS 2.1.x是向前兼容0.8.3创建的存储池的,不用担心池无法挂载的问题。
- 方案二中,降级内核后要确认你的硬件(比如新显卡、网卡)在5.4内核下能正常工作,部分新硬件可能依赖HWE内核的驱动。
备注:内容来源于stack exchange,提问作者user2005848
相关产品推荐
相关产品推荐

