In a previous article, I explained how to Setup ZFS with RAIDZ pool on your Linux Server .
Even if I'm doing regular updates to my Debian Wheezy server, I hardly reboot it, once every blue moon.
With these regular updates, my ZFSonLinux packages have been updated from version 0.6.2 to 0.6.3, from 0.6.3 to 0.6.4, from 0.6.4 to 0.6.4.1 , ... but without a reboot after every update.
To my surprise, after next reboot following a ZFSonLinux update, both my ZFS pools had disappeared. All my important server data where lost !
While searching the web for an explanation, I read lots of articles giving some tips and tricks, but nothing was really convincing. And more than that, lots of stuff was looking quite dangerous, with a high risk of definitely breaking the ZFS pools. After lots of searches, I finally found the real explanation to this huge problem on zfsforlinux discussion group.
Even if the solution is very simple, it is to my point of view worth writing this article. In fact, I hope it will help you to go straight to the solution. This should avoid you lots of frightening time ...
Please note that this solution is valid for servers where the / partition is not a ZFS one. Your ZFS pools should not host the root filesystem. They should be mounted during the boot process.
If you loose your ZFS pools because of a broken update, your zpool mount points are desperately empty and you should get these command results :
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.
Scary, isn't it
Under Debian, during the update of ZFSonLinux, some ZFS libraries are going thru some major version upgrade.
And in that case, for these new libraries to replace previous ones, you need to upgrade your system with dist-upgrade (instead of a classic upgrade).
If you fail to do so, you'll be missing some libraries after next reboot.
And ... this is exactly what has happened to my server !
As explained in the introduction, the solution to this semi-broken upgrade problem is damn simple.
To get back your ZFS pools, you just need to issue a dist-upgrade and to reboot your server.
During the upgrade process, libzfsx & libzpoolx libraries may be upgraded with next generation (and major versionning) libraries will be installed.
# apt-get dist-upgrade
Your ZFS pools should now be back to life ... and your precious data available again.
Hope it helps !