Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 25 Sep 2010 13:16:49 -0500 (CDT)
From:      Robert Bonomi <bonomi@mail.r-bonomi.com>
To:        freebsd-questions@freebsd.org, tg@gmplib.org
Subject:   Re: Mount order for ZFS, jails, and nullfs
Message-ID:  <201009251816.o8PIGnnG027025@mail.r-bonomi.com>

next in thread | raw e-mail | index | archive | help
> From owner-freebsd-questions@freebsd.org  Fri Sep 24 11:02:59 2010
> To: freebsd-questions@freebsd.org
> From: Torbjorn Granlund <tg@gmplib.org>
> Date: Fri, 24 Sep 2010 18:03:06 +0200
> Subject: Mount order for ZFS, jails, and nullfs
>
> In jails, I'd like a local ZFS /, a read-only nullfs-mounted /usr, and a
> local /usr/local.  (I'd also have read-only nullfs-mounted /bin, /lib,
> /libexec, but let's forget about that for now.)
>
> This way, I can upgrade the master /usr once, in one place, and have all
> jails inherit it.  And my dear jail inmates can install anything in
> /usr/local (such as their favourite packages/ports).
>
> I.e., things should look like this:
>
> /myjail/                zfs
> /myjail/usr             nullfs ro
> /myjail/usr/local       zfs
>
> There is no problem to make this happen by issuing a handful of commands
> manually after boot, but I cannot seem to get it to work automatically,
> with existing boot mechanism.  The problem is that the mount of /usr
> will be attempted before ZFS has mounted /myjail, the jail's root.
>
> ZFS maintains its own mount table.  It is possible to disable the
> automated mounting in ZFS by specifying the pseudo mountpoint "legacy",
> and then--according to the FreeBSD manual--mount it with mount(8).
> Unfortunately, FreeBSD's mount seems unable to perform mounts of ZFS
> volumes.
>
> How can I achieve the result I want after a reboot?

if the traditional way doesn't work for you, the solution is "don't use
the traditional way'.  <grin?

Seriously.

For the stuff that has to  mount _after_ zfs is running (i.e. '/myjail/usr'),
mark them as 'noauto' in the fstab.  

Do the 'equivalent' for any zfs fs that mounts _below_ those points (i.e.,
'/myjail/user/local').

That way the normal stages in the boot process will _not- mount them 
prematurely.

THEN, add a boot script that "requires zfs' and wherever the actual zfs
mounts are done. In -that- script, insert 'manual' commands, _in_the_order_
you need things to happen in.

It is advisable to drop notes in /etc/fstab and the zfs equivalent, that
these filesystems are automatically mounted by the {mumble} script.  Such
notes save _lots_ of hair-tearing in the future, when you have to trouble-
shoot something you "don't remember" the details of doing.





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201009251816.o8PIGnnG027025>