Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 23 Jan 2012 23:39:10 +0100
From:      Andreas Nilsson <andrnils@gmail.com>
To:        "Christopher J. Ruwe" <cjr@cruwe.de>
Cc:        freebsd-fs@freebsd.org
Subject:   Re: Booting from zfs snapshot
Message-ID:  <CAPS9%2BSv7m0p-V1xUYxP2TZmu74iEfEMmrQm1MV4U7R4OtNmeww@mail.gmail.com>
In-Reply-To: <20120123224717.55de7481@dijkstra>
References:  <CAPS9%2BSsyvw=Day%2B1XC8HmzWQG3M=GZE=Nt-qaEQiQTPYME9MrA@mail.gmail.com> <jfgv8j$82s$1@dough.gmane.org> <CAPS9%2BSvtYZt1m26jCqRH6c3w_aB3hWt56ZFoYJAw_cEu2NANzg@mail.gmail.com> <jfjlhq$p77$1@dough.gmane.org> <CAPS9%2BSvA8c=uY7b%2BeKMrA2CnFS4Kg1ccxgaVYm9RSZy1GQ6ChA@mail.gmail.com> <20120123224717.55de7481@dijkstra>

next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, Jan 23, 2012 at 10:47 PM, Christopher J. Ruwe <cjr@cruwe.de> wrote:

> On Mon, 23 Jan 2012 14:42:19 +0100
> Andreas Nilsson <andrnils@gmail.com> wrote:
>
> > On Mon, Jan 23, 2012 at 1:58 PM, Johannes Totz <johannes@jo-t.de>
> > wrote:
> >
> > > On 22/01/2012 20:15, Andreas Nilsson wrote:
> > >
> > >> On Sun, Jan 22, 2012 at 1:25 PM, Johannes Totz<johannes@jo-t.de>
> > >> wrote:
> > >>
> > >>  On 19/01/2012 16:26, Andreas Nilsson wrote:
> > >>>
> > >>>  Hello,
> > >>>>
> > >>>> I'm trying to wrap my head around the process of booting from a
> > >>>> zfs snapshot. I have hit a few roadblocks, which I hope this is
> > >>>> the adequate list to post to regarding those.
> > >>>>
> > >>>> A short note on what I'm trying to achieve might be in order. In
> > >>>> short: a
> > >>>> nanobsd system on zfs only. I want to boot from a snapshot so
> > >>>> that when I
> > >>>> push out an upgrade with zfs send, I want the root filesystem to
> > >>>> remain unchanged.
> > >>>>
> > >>>> The problems I've hit so far:
> > >>>> *1 Making the zpool.cache file available
> > >>>> *2 Having / mount via entry in fstab.
> > >>>>
> > >>>>
> > >>> FWIW, I dont use any fstab for my zfs-only machine. Works
> > >>> perfectly fine with mountpoint property.
> > >>>
> > >>
> > >>
> > >> It was just a small hope that the boot would continue with the
> > >> filesystem pointed out by the bootfs property. I'm setting
> > >> vfs.root.mountfrom in loader.conf now.
> > >>
> > >>
> > >>
> > >>>
> > >>>  *1: The zpool.cache is needed to autoimport a pool as I
> > >>> understand it. Is
> > >>>
> > >>>> there a way to force the kernel to import a pool during bootup
> > >>>> even though
> > >>>> no zpool.cache is around? What does this file actually contain?
> > >>>>
> > >>>> I made an experiment and booted a disk with zfs root from
> > >>>> machine a in machine b and that worked. I did partition the disk
> > >>>> with gpart using a gpt
> > >>>> scheme, and labeled the partition on which the pool resides as
> > >>>> os, and upon
> > >>>> creation of the zpool used gpt/os as device. Does this mean that
> > >>>> as long as
> > >>>> gpt/os is available, any machine boot this disk will have the
> > >>>> zpool autoimported?
> > >>>>
> > >>>>
> > >>> Not quite sure I understand you here. Just a note: booting kernel
> > >>> and mounting root fs are two different things. the *zfsloader
> > >>> will happily load
> > >>> the kernel off a pool and boot it but mounting root might fail
> > >>> later (I guess if no cachefile is present?).
> > >>>
> > >>>  Sorry for being unclear. What I experience is exactly what you're
> > >> describing: gptzfsloader loads the kernel and runs it just fine,
> > >> but mounting root fails due to missing zpool.cache.
> > >>
> > >> I'm looking for a way to have the pool imported without the
> > >> zpool.cache
> > >>
> > >>
> > >>
> > >>>
> > >>>  *2: Having a line like
> > >>>> tank/root/8.2-RELEASE-p5@ro / zfs ro 0 0
> > >>>> in fstab causes mount to throw an error and leave me in single
> > >>>> user mode,
> > >>>> when the system is booted however mount can mount a zfs snapshot
> > >>>> just fine.
> > >>>> Setting vfs.root.mountfrom in loader.conf works just fine though.
> > >>>>
> > >>>>
> > >>>  The above I still think is rather strange: setting
> > >>> vfs.root.mountfrom
> > >> to a
> > >> snapshot ( given that the snapshot has the zpool.cache file)
> > >> works, but not
> > >> having the corresponding line in fstab.
> > >>
> > >>
> > >>>
> > >>> --
> > >>> Sent from my<insert random gadget here>
> > >>>
> > >>>
> > >> What I'm seeking a solution to is this: Boot several machines from
> > >> one zfs snapshot. Since the stream from zfs send is also used to
> > >> do the initial install there is no easy way to get the correct
> > >> zpool.cache file in the snapshot. I guess one possible way to
> > >> tackle this problem is to modify zpool so that all pools get
> > >> created with the same id.
> > >>
> > >
> > > There's a way to pre-load a zpool.cache via the loader (from an
> > > alternative location). Can't remember the correct variables to set
> > > right now...
> > >
> > > As for w/o any cache file... no idea.
> > >
> > > Ok, I'll research that. If it could be loaded from another
> > > disk/partition
> > I could really use it :)
> >
> >  It is of course possible to edit the cachefile property of the
> > zpool, but I think one can only set it to something relative the
> > dataset from which one boots.
> >
> > Regards
> > Andreas
> > _______________________________________________
> > freebsd-fs@freebsd.org mailing list
> > http://lists.freebsd.org/mailman/listinfo/freebsd-fs
> > To unsubscribe, send any mail to "freebsd-fs-unsubscribe@freebsd.org"
>
>
> Just a curious question: Will what you are trying to implement be
> similar to Solaris boot environments/beadm?
>
Yes and no. I want my systems read-only, whereas solaris has root rw. And
the bootenv is not really a snapshot, but a zfs clone of a snapshot ( ie
writable ), which is not what I'm after.

>
> In short, Solaris boot environments are similar to what you described
> (booting of snapshots) and are used to facilitate maintainance,
> cf.
> http://www.c0t0d0s0.org/archives/4372-New-features-of-Solaris-Alternate-boot-environments-based-on-snapshots.html
> .


> If so, maybe you can salvage code from there (or Illumos)?
>
> For general purpose fbsd setup, that is how I try to run the system. I
actually did when I had fbsd on my laptop. I did start trying to
port/implement it, which I thought would be easy since it is python-based,
but I had more pressing issues so "doing it by hand" had to do.


> Cheers,
> --
> Christopher J. Ruwe
> TZ GMT + 1
>
>
Cheers
Andreas



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAPS9%2BSv7m0p-V1xUYxP2TZmu74iEfEMmrQm1MV4U7R4OtNmeww>