linux 上的 ZFS 从 0.6.2 升级到 0.6.3 使我的 zpool 无法读取帮助将 CentOS 转换为 Ubuntu 命令

Rei*_*sem 6 linux ubuntu zfs zfsonlinux

ubuntu 13.10使用sudo apt-get upgrade并重新启动升级我的服务器后,我的 zpool 不会显示。

messier@ANDERSON:~$ sudo zpool status
no pools available
messier@ANDERSON:~$ sudo zpool import
zpool: ../../lib/libzfs/libzfs_import.c:356: Assertion `nvlist_lookup_uint64(zhp->zpool_config, ZPOOL_CONFIG_POOL_GUID, &theguid) == 0' failed.
messier@ANDERSON:~$
Run Code Online (Sandbox Code Playgroud)

我查看了 linux github 上的 zfs,我找到了 CentOS 的修复程序,即删除旧的内核模块,然后重新安装软件以获取新的内核模块。

$ 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")
Run Code Online (Sandbox Code Playgroud)

人们说这是修复它。我只是不知道如何在我的 ubuntu 服务器上运行此修复程序。感谢您的帮助!

上次编辑:如果您访问此页面是因为 zfs 更新错误。最简单的解决方案就像 Scott Simon 所说的那样。

# apt-get update
# apt-get dist-upgrade
# reboot
Run Code Online (Sandbox Code Playgroud)

841*_*104 6

$ sudo find /lib/modules/$(uname -r)/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
$ sudo apt-get install --reinstall ubuntu-zfs
$ sudo apt-get install --reinstall $(dpkg-query --show --showformat='${binary:Package}\n' | egrep 'spl|zfs')
Run Code Online (Sandbox Code Playgroud)

Ubuntu的保持它的所有DKMS的/lib/modules/$(uname -r)/updates,而不是/lib/modules/$(uname -r)/extrafind /lib/modules/$(uname -r)/weak-updates作为CentOS的一样。

yum resinstall相当于apt-get install --reinstall
Ubuntu的ZFS元数据包是ubuntu-zfs不是zfs-release因为它是在CentOS的。
rpm -qa相当于dpkg-query --show --showformat='${binary:Package}\n'

我也不确定 find 命令是否真的需要运行,因为apt-get可能已经解决了这个问题,但运行它不会破坏进程。

具有更多知识或经验的人dpkg可能能够编写稍微更有效的命令,但我怀疑这对于大多数用途来说已经足够了。