ZFS on disk versions, downgrade from 13 to 10?

726 views
Skip to first unread message

Peter Tripp

unread,
Nov 6, 2008, 2:27:08 PM11/6/08
to zfs-fuse
Hello all,

Backstory: I've been running a 4x1TB RAID-z array with ZFS-FUSE under
Ubuntu for the last couple months for my personal server and I've been
very happy. I settled on using ZFS-FUSE for my data after having all
sorts of trouble with my root fs being UFS under Solaris 5/08. Unlike
Solaris+UFS, Ubuntu + Ext3 root + ZFS RaidZ Data was stable, although
a little slow, but now that ZFS boot in Solaris 10/08, I thought I'd
give it a shot.

So I did a fresh install with 10/08, but now I can't import my raid-z
set because it is in fact a newer version that what's in Solaris.
This is a problem that I forsee will happen to others down the road as
ZFS-Fuse will be (and should be) based around the current OpenSolaris
ZFS version, which will always be newer than the zfs version in the
fully supported Solaris release.

Naively I would suggest a 'zpool downgrade' command, but that's
certainly something more for the ZFS upstream and not just your fuse
port. 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)

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/

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.

Ricardo M. Correia

unread,
Nov 6, 2008, 3:01:32 PM11/6/08
to zfs-...@googlegroups.com
On Qui, 2008-11-06 at 11:27 -0800, Peter Tripp wrote:
> This is a problem that I forsee will happen to others down the road as
> ZFS-Fuse will be (and should be) based around the current OpenSolaris
> ZFS version, which will always be newer than the zfs version in the
> fully supported Solaris release.

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


Ricardo M. Correia

unread,
Nov 6, 2008, 3:28:06 PM11/6/08
to zfs-...@googlegroups.com
On Qui, 2008-11-06 at 21:01 +0100, Ricardo M. Correia wrote:
> > 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]).

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

Ricardo M. Correia

unread,
Nov 6, 2008, 5:58:16 PM11/6/08
to zfs-...@googlegroups.com
On Qui, 2008-11-06 at 21:01 +0100, Ricardo M. Correia wrote:
> 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/

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

Reply all
Reply to author
Forward
0 new messages