从zfs-0.6.2-1.el6.x86_64更新到zfs-0.6.3-1.el6.x86_64由zpool所做的不可读

运行# yum update zfsZFS on Linux系统ZFS on Linux重新启动我的CentOS 6 ZFS on Linux将无法再看到zpools或与其进行交互。

 # zpool status no pools available # zpool import zpool: ../../lib/libzfs/libzfs_import.c:356: Assertion `nvlist_lookup_uint64(zhp->zpool_config, ZPOOL_CONFIG_POOL_GUID, &theguid) == 0' failed. Aborted # dmesg | grep -i spl SPL: Loaded module v0.6.2-1 SPL: using hostid 0x43a4c8a0 

这是一个金丝雀系统,所以我不担心它的内容,但我有其他机器,我最终希望安全升级。 我做错了什么,更重要的是我怎样才能为重要的系统做好准备?

这看起来像一个错误。 事实上, 这是一个错误 。 ZFS用户区被更新,但内核模块没有被DKMS更新。 这个断言是由版本不匹配造成的。

你可以通过删除旧的内核模块,然后重新安装所有东西来解决bug。

 $ find /lib/modules/$(uname -r)/extra -name "splat.ko" -or -name "zcommon.ko" -or -name "zpios.ko" -or -name "spl.ko" -or -name "zavl.ko" -or -name "zfs.ko" -or -name "znvpair.ko" -or -name "zunicode.ko" | xargs rm -f $ find /lib/modules/$(uname -r)/weak-updates -name "splat.ko" -or -name "zcommon.ko" -or -name "zpios.ko" -or -name "spl.ko" -or -name "zavl.ko" -or -name "zfs.ko" -or -name "znvpair.ko" -or -name "zunicode.ko" | xargs rm -f $ yum reinstall zfs-release $ yum reinstall $(rpm -qa | egrep "zfs|spl") 

这是在ZFS邮件列表中讨论的。

内核ABI在0.6.2和0.6.3之间变化,0.6.3用户工具不能与0.6.2内核模块交互,这是0.6.3升级后的configuration。 根据这个列表上的许多消息,正确的方法就是重启。

这包括在ZFS错误报告中: https : //github.com/zfsonlinux/zfs/issues/2400#issuecomment-46118193

我只使用ZFS进行数据分区,所以我卸载了软件包,摆脱了弱模块的引用,重新安装了ZFS。

 # rpm -e `rpm -qa | egrep '(spl|zfs)'` # cd /lib/modules/2.6.32-431.17.1.el6.x86_64/weak-updates/ # rm -fr spl* z* # yum localinstall --nogpgcheck http://archive.zfsonlinux.org/epel/zfs-release$(rpm -E %dist).noarch.rpm # yum install zfs 

编辑 :我仍然不得不重新启动。

编辑:

提出的两种解决方法都导致了ZFS安装中的一些问题。 由于缺less关键参数( zfs: Unknown parameter zfs_vdev_max_pending'`),导致模块加载存在一些问题。 我认为这个版本对于现有系统的一般版本或盲目更新是不安全的。

如果你最终在这个页面上运行Debian ,你只需要做以下的事情来解决这个问题:

 # apt-get update # apt-get dist-upgrade # reboot 

发生这个问题的原因是一个简单的update不能取代旧的库文件。 这就是为什么需要dist-upgrade原因。 从apt-get manpage :

dist-upgrade除了执行升级function之外,还能智能地处理与新版本软件包相关的变化。 apt-get有一个“智能”的冲突解决系统,它会尝试升级最重要的软件包,但是如果有必要的话可以牺牲不太重要的软件包。 dist-upgrade命令可能因此删除一些包。

资料来源: http : //bernaerts.dyndns.org/linux/75-debian/312-debian-wheezy-zfsonlinux-zpool-lost