Some ZFS pools not present after upgrade to 10.0

I have just upgraded my server from 9.2-STABLE to 10.0-STABLE. I normally have 3 ZFS pools:

  • bootdir
  • zroot
  • zstore

The only one present after the upgrade was zroot.After I ran zpool import bootdir and zpool import zstore I could then see all the pools no problem (I had to upgrade ZFS too but thats another story). Heres the strange part, when I rebooted the machine again, I could only see the zroot pool!

Is this a bug or feature? How can I have ALL my ZFS pools available when I reboot my machine? This was never an issue on 9.2.
 
Has no-one else experienced this with 10.0?

When I had RC4-10.0 installed on a test machine I experienced the same behaviour with my ZFS pools not being available. I thought it was due to me installing (and testing) an RC version of FreeBSD.

Is there a solution for this problem I have? Do I have to import all my non-root pools using a bootup script (yuck)?
 
Is this yet another case of zfs_enable="yes" missing from /etc/rc.conf? This would cause the pools to not be mounted on boot (although they should actually show in zfs/zpool commands).
 
usdmatt said:
Is this yet another case of zfs_enable="yes" missing from /etc/rc.conf?

Nope. Copied from my /etc/rc.conf:

Code:
zfs_enable="YES"

As mentioned in my original post, this was all working fine before upgrading 9.2-STABLE to 10.0-STABLE. On 9.2 the pools were there when the system rebooted but in 10.0 they aren't.
 
Do the pools show in zfs list on boot or are they completely gone? And are you using encryption on the root pool.

You may be running into something related to this.
http://forums.freebsd.org/viewtopic.php?t=42980

I've not had much experience with 10 yet but I've got a funny feeling it finds the root pool without needing the cache file, but doesn't bother reading the cache file at all, meaning it doesn't load any additional pools.
 
I just rebooted the server again. Before rebooting I could see ALL 3 ZFS pools by running zpool status.

I logged in now after rebooting and I can only see the root pool. Running zfs list only shows the root pool (and its datasets).

Very confusing. I am using geli but thats been used since the server was built.
 
I you're using GELI then that could be it. As I said I have little experience with 10 but I know that changes have been made to load the root pool without needing the cache file (which does make things easier if you have only one pool). However, I don't quite understand how it's supposed to load additional pools if it doesn't use the cache file. I think that's what the loader variables in the linked post are supposed to fix. If you have more than one pool it has to be forced to look in the cache file to find the others.

I would import bootpool, then zstore, then add the loader lines from the last post in the linked thread. Then try rebooting.
 
So I'm not going crazy!

I shall have a read through that post and report back what I find. Currently I just manually reimport the pools but its a pain and I know I will forget it in the future.
 
FWIW, a clean install of FreeBSD-10.0-RELEASE has the following zfs-related /boot/loader.conf entries:
Code:
zfs_load="YES"
zpool_cache_load="YES"
zpool_cache_type="/boot/zfs/zpool.cache"
zpool_cache_name="/boot/zfs/zpool.cache"
which suggests it is using the cache file. If not, then the references to it would be moot, no?
 
Hmm it looks like RELEASE already adds the relevant lines to /boot/loader.conf. That still needed fixing last time I used one of the RC versions. Of course depending on how @xy16644 performed the upgrade, he may not have those lines in his copy if it kept his existing file.
 
Last edited by a moderator:
I don't have those lines on my server. I upgraded from 9.2-STABLE to 10.0-STABLE from source. I did it all from the command line though and didn't use the sysinstall way.

I shall make the change this weekend and give it a try. Thanks all!
 
trh411 said:
FWIW, a clean install of FreeBSD-10.0-RELEASE has the following zfs-related /boot/loader.conf entries:
Code:
zfs_load="YES"
zpool_cache_load="YES"
zpool_cache_type="/boot/zfs/zpool.cache"
zpool_cache_name="/boot/zfs/zpool.cache"
which suggests it is using the cache file. If not, then the references to it would be moot, no?

I made the above changes today and I can confirm that ALL my ZFS pools are now mounted after the server reboots. Thanks to all for the help and I hope this helps someone in the future who uses geli.
 
Good to hear you got things resolved.

This got me thinking. I've got an external USB drive formatted with zfs that I explicitly import/export via /etc/rc.local and /etc/rc.shutdown.local, respectively. I'm now wondering if that is unnecessary. Next time I shutdown and reboot my system I'm going to see if FreeBSD-10.0 handles the the exporting/importing of this external zpool cleanly without the use of the rc scripts.
 
Back
Top