OpenSolaris is also fully supported by Sun. Look for "OpenSolaris
support" in this page:
http://www.opensolaris.com/get/
> Naively I would suggest a 'zpool downgrade' command, but that's
> certainly something more for the ZFS upstream and not just your fuse
> port.
Right. Sun is looking into implementing a more flexible upgrade
mechanism that ties pools and filesystems only to features that are
actually being used, and in some cases it may also be possible to
downgrade, but this is not one of our priorities, I believe.
> Is there a way to upgrade a pool but only to a certain on-disk
> version? (e.g. upgrade version 9 to 10, not just 9 to 13)
Yes, see "zpool upgrade --help".
> What I would suggest in its place is some documentation about which on
> disk ZFS versions each release of ZFS-FUSE uses and how that
> corresponds to different OpenSolaris, Solaris Express and Solaris
> (supported) releases so people have an idea of the readability of
> their file systems outside of ZFS-FUSE. Personally, I didn't realize
> that the on disk format was such a moving target and assumed (again,
> naively) that there'd be more interoperability between versions.
>
> I think Solaris 10/08 is using version 10 (or maybe 11?)
> http://www.opensolaris.org/os/community/zfs/version/10/
Solaris 10/08 is the same as Solaris update 6, and it's using ZFS pool
version 9:
http://www.opensolaris.org/os/community/zfs/version/9/
> And ZFS-FUSE is using version 13
> http://www.opensolaris.org/os/community/zfs/version/13/
>
> So although I've resigned myself to backing up to some NAS, destroying
> the array and recreating unless someone has an alternate suggestion.
Right now, the only option is not to upgrade to the latest ZFS pool
version if you expect to be able to use your pools with older versions
of the ZFS code (which might include Solaris, FreeBSD, Mac OS X,
OpenSolaris 2008.05, older Solaris Express releases or SXDE, or even
older zfs-fuse versions if you were so inclined [not recommended]).
Also, if you backup your pools using zfs send/recv, be careful about
changing implementations, because I don't think backwards or forwards
compatibility is supported by those commands (see the zfs man page for
more information).
HTH,
Ricardo
A few more suggestions:
You can also create your pools with a given ZFS pool version by doing:
$ zpool create -o version=x <poolname> <vdevs>
One more thing to be careful about is that besides pool versions, there
is also per-filesystem versions:
$ zfs upgrade -v
The following filesystem versions are supported:
VER DESCRIPTION
--- --------------------------------------------------------
1 Initial ZFS filesystem version
2 Enhanced directory entries
3 Case insensitive and File system unique identifer (FUID)
For more information on a particular version, including supported
releases, see:
http://www.opensolaris.org/os/community/zfs/version/zpl/N
Where 'N' is the version number.
You can also create filesystems with a given filesystem version by using
a syntax similar to the above:
$ zfs create -o version=x <poolname>/<fsname>
HTH,
Ricardo
Minor correction: it seems like Solaris 10/08 indeed uses pool version
10, but it doesn't support cache devices.
I've asked for the page to be corrected and refer to the correct
marketing name, and it's now been fixed:
http://www.opensolaris.org/os/community/zfs/version/10/
Cheers,
Ricardo