[Solved] Importing pools with unsupported features - is that possible?

I have been debaring whether to post this in Proxmox or OpenZFS but I finally decided to post in OpenZFS - my apologies if Proxmox is a better fit.

I have a ZFS pool made up of 2 spinning rust drives in a mirror. They have been running in a Proxmox server until I pulled them out from there - mainly because of physical space issues (original server is a Lenovo Tiny).

I have installed Proxmox VE 8.0 on another machine where I would like to import this pool. This installation has later been upgraded to 8.2.7.

When I try to import the pool I get:

# zpool import denise
cannot import 'denise': pool was previously in use from another system.
Last accessed by tinyserver (hostid=222f6cc6) at Thu Jul 11 13:09:55 2024
The pool can be imported, use 'zpool import -f' to import the pool.

When I try to force it, I get:

# zpool import -f denise
This pool uses the following feature(s) not supported by this system:
        com.klarasystems:vdev_zaps_v2
cannot import 'denise': unsupported version or feature

I do not understand where this feature has come from - 1) is there an optional module in debian 12/proxmox that adds this feature? (I guess this part should really be in Proxmox - hmmm)

  1. To keep this post on track with OpenZFS: Is there a way to clear a feature flag from a non-live pool or to force ignore it on import?

  2. What does com.klarasystems:vdev_zaps_v2 do? I have tried googling this, but I just cannot get my head around it - it is related to hashes and how to deal with large empty hash tables - but why(4a) and how (4b)? 5) Would it make any difference on a 2 drive mirror pool?

Now I could raise (1) with the Proxmox crew, but I guess the rest of my questions have a wider, more OpenZFS audience?

Update:
Before anyone asks what my OpenZFS version is:

# zpool version
zfs-2.2.6-pve1
zfs-kmod-2.1.12-pve1

Could it be related to the older 2.1 zfs-kmod version?

ZAPs are, to put it extremely simplistically, on-disk structures which store metadata about the pool. The initialism expandes to ZFS Attribute Processor. If you want to know more, this is deep enough in the codebase that the best answers are probably found in the source code itself, and I’d recommend starting here: zfs/include/sys/fs/zfs.h at master · openzfs/zfs · GitHub

I can’t tell you exactly what the update to ZAPs in that particular feature are, but I’m not sure it matters very much: we’re talking about on-disk structures, so either you have the code to support those features, or you don’t import the pool. Pretty much that simple.

If you want to import that pool, you’ll need to upgrade the ZFS version on that host to support the feature indicated. If you don’t want to do that, you cannot import the pool–but you can mount that pool on a system which does support it, then replicate the datasets on that pool to the new pool that you want to use, which does not support that feature itself.

Hope that helps!

edit: and for the record, vdev_zaps_v2 was introduced with OpenZFS 2.2, so yeah, you would not have access to that feature on a system which only offers OpenZFS 2.1.

Thanks @mercenary_sysadmin for the quick answer!

I am very close to doing a facepalm as well - I rebootet the proxmox server and now it shows:

# zpool version
zfs-2.2.6-pve1
zfs-kmod-2.2.6-pve1

And the pool imports … I guess I should have gone to bed earlier and looked at this in the morning instead!

2 Likes

That’s awesome, I’m glad your system auto-updated itself to solve your problem in place!

1 Like