Linux

linux 上的 ZFS 從 0.6.2 升級到 0.6.3 使我的 zpool 無法讀取幫助將 CentOS 轉換為 Ubuntu 命令

  • July 16, 2014

使用升級我的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:~$

我查看了 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")

人們說這是修復它。我只是不知道如何讓這個修復程序在我的 ubuntu 伺服器上執行。感謝您的幫助!

最後編輯:如果您進入此頁面是因為 zfs 更新錯誤。最簡單的解決方案就像 Scott Simon 所說的那樣。

# apt-get update
# apt-get dist-upgrade
# reboot
$ 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')

Ubuntu 將其所有 dkms 保存在 中/lib/modules/$(uname -r)/updates,而不是像 CentOS 那樣保存在/lib/modules/$(uname -r)/extra和中。find /lib/modules/$(uname -r)/weak-updates

yum resinstall相當於apt-get install --reinstall

Ubuntu 的 zfs 元包與 CentOS 中的ubuntu-zfs不同。相當於zfs-release

rpm -qa``dpkg-query --show --showformat='${binary:Package}\n'

我也不確定 find 命令是否真的需要執行,因為apt-get可能已經處理好了,但執行它不會破壞程序。

具有更多知識或經驗的人dpkg可能能夠編寫稍微更有效的命令,但我懷疑這對於大多數目的來說已經足夠了。

引用自:https://serverfault.com/questions/606299