使用sudo apt-get upgrade并重新启动升级我的ubuntu 13.10服务器后,我的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更新错误。 最简单的解决scheme就像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 ,而不是在/lib/modules/$(uname -r)/extra和find /lib/modules/$(uname -r)/weak-updates像CentOS一样find /lib/modules/$(uname -r)/weak-updates 。
yum resinstall相当于apt-get install --reinstall 。
Ubuntu的zfs metapackage是ubuntu-zfs而不是zfs-release因为它在CentOS中。
rpm -qa相当于dpkg-query --show --showformat='${binary:Package}\n'
我也不确定find命令是否真的需要运行,因为apt-get可能已经处理好了,但是运行它并不会打破这个过程。
对dpkg有更多的了解或经验的人可能会写出一个稍微更高效的命令,但是我怀疑这对于大多数目的来说已经足够了。
官方错误页面为Ubuntu和Debian用户提供了这个修补程序:
# apt-get update # apt-get dist-upgrade # reboot
我在proxmox 3.2上安装了debian-zfs(使用这个内核的pve-headers-2.6.32-26-pve)。 这是我升级后如何修复它的。
aptitude purge dkms debian-zfs spl-dkms zfs-dkms
我在所有提示中select了“是”,将其全部删除。 之后,我做了一些检查,如果有任何dkms剩菜。 下面的命令应该显示一个空目录。
ls /lib/modules/2.6.32-26-pve/updates/dkms/
如果你看到任何东西(上面的目录),你需要全部删除它(除非你有其他定制的内核模块) 。
然后就像这样简单:
apt-get install debian-zfs
然后导入我的池(我的池被称为坦克):
zpool import tank
zfs因为在所有剧集发生之前没有正确导出而感到沮丧。
cannot import 'tank': pool may be in use on another system
这不是一个问题,我再次尝试这个:
zpool import -f tank
上面的工作,我可以看到我的池与这个命令:
zpool status root@proxmox-01:~# zpool status pool: tank state: ONLINE scan: scrub repaired 0 in 0h8m with 0 errors on Tue Jul 8 20:39:13 2014 config: NAME STATE READ WRITE CKSUM tank ONLINE 0 0 0 raidz2-0 ONLINE 0 0 0 scsi-SATA_WDC_WD1001FALS-_WD-WMATV4198253 ONLINE 0 0 0 scsi-SATA_WDC_WD1002FAEX-_WD-WCAW30398837 ONLINE 0 0 0 scsi-SATA_WDC_WD1002FAEX-_WD-WCAW30404054 ONLINE 0 0 0 scsi-SATA_WDC_WD1002FAEX-_WD-WCAW30406039 ONLINE 0 0 0 errors: No known data errors
我对此感到高兴。 但是proxmox有点困难。 我不得不为proxmox挂载点,因为它会自动创build您添加到proxmox的“存储”的目录结构。
首先我检查/tank是不是可爱的zfs池,使用du -hs /tank 。 我的游泳池里有很多东西,大大超过12KB。
我导出(断开)我的zfs池zpool export tank
我用rm -R /tank删除了EMPTY /tank目录(请仔细检查!!)
然后我导入我的池(连接) zpool import tank和你的zfs存储应该工作,proxmox访问。
这就是我如何让我的zfs在proxmox上工作:
http://www.anotherlan.com/proxmox-zfs-on-linux-local-storage
用户84104的解决scheme“工作”。 我做了第一行。 其余的都不起作用。 所以我尝试了sudo apt-get remove ubuntu-zfs dkms ,然后sudo apt-get install ubuntu-zfs dkms ,同样的错误发生了。 Dkms没有认识到zfs / 0.6.3和spl / 0.6.3与3.11.0-23-通用内核的不同。 所以我去使用sudo dkms remove zfs/0.6.3 --all和sudo dkms remove zfs/0.6.3 --all ,然后我强制安装这两个模块使用sudo dkms install zfs/0.6.3 --force和sudo dkms install spl/0.6.3 --force
基本上解决方法是使用dkms删除模块,然后强制安装0.6.3。