[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