[oi-dev] Updating Hipster and GUI log-in breakage with mounted ZFS datasets

Laurent Blume laurent+oi at elanor.org
Fri Feb 20 11:04:47 UTC 2015


Le 2015/02/18 16:39 +0100, Jim Klimov a écrit: 
> Nikola, in Alexander's defense - AFAIK it was not his 'arbitrary decision' that /opt is not officially supported as a separate dataset. 
>
> When Sun first introduced zfs-based rootfs (as opposed to ufs root and zfs userdata), its installer only offered optional placement of /var into a separate dataset (child of current root) - not /opt nor /usr as part of the OS package targets. I think this has not been changed since than (even if it was a regression compared to several ufs slices or lvm's). Things outside of this might have worked 'by chance', but otherwise they were not required nor guaranteed to. With other usecases, like my eagerness for split-roots, users are on their own. 

to be fair, this problem is not new, and actually predates ZFS by a long
time. At core, it's not exactly a separate dataset that's the problem,
but sharing the same /opt dataset among different BE's.
It appeared with Live Upgrade. From this point on, although it was
supported to have a separate /opt, it was not supposed to be a shared
one between BE's.
Not only Solaris has always put system packages there, for historical
(ie, bad) reasons (eg, SUNWmlib), but other packaged binaries also did,
like Blastwave/OpenCSW.

It was already documented in lucreate(1M) in 2001:

     The lucreate command makes a distinction  between  the  file
     systems  that  contain  the  OS-/,  /usr, /var, and /opt-and
     those that do not, such as /export, /home, and other,  user-
     defined file systems. The file systems in the first category
     cannot be shared between the source  BE  and  the  BE  being
     created;  they  are  always copied from the source BE to the
     target BE.

SunOS 5.8           Last change: 22 Oct 2001                    1

Of course, when zfs appeared, the problem was exposed differently,
because having a dataset on a different hierarchy or pool caused
different issues, but it was already well established that /opt was not
to be shared. LU could not cope with it without extensive changes on an
already brittle infrastructure (and even later, it had plenty of
problems when using separate datasets below system directories like /var).
So they removed the option since rather than spend a considerate amount
of time on getting a fringe case to work reliably with the already
difficult to manage SysV packaging/patching system.
That it was still split manually was a mistake (and I've seen it done
more than once, with real breakage as a consequence, that I had to fix).

Laurent





More information about the oi-dev mailing list