Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 27 May 2011 13:08:53 +0200
From:      tzim@tzim.net
To:        <freebsd-stable@freebsd.org>
Subject:   zfs-root and "safe" atomic updates
Message-ID:  <63454684d7d46c2ef76cfcc979500612@tzim.net>

next in thread | raw e-mail | index | archive | help
I use zfs on / for quite some time now on 8-stable.

Each time I want to update base, I use those steps :

  - zfs snapshot tank/root@old
  - zfs clone tank/root@old tank/root.old
  - csup / Rebuild world and kernel
  - install world & kernel
  - reboot
  - (mergemaster and all usual post-update stuff)

This way, if I unfortunately can't boot, I can revert to old userland & 
kernel by :

  - dropping into loader prompt
  - setting vfs.root.mountfrom to zfs:tank/root.old
  - booting kernel.old
  - then rollback tank/root to pre-update snapshot and reboot (again)


I see 2 drawbacks to my method :

  - This wont work if the update screws the loader.
  - I must be able to access the loader prompt (can't do it on a remote 
server).

Also, world is updated "in place".

I think it should be possible to do the installworld & installkernel on 
a root clone then boot into it (changing tank bootfs property), but then 
: how to revert to previous state in case of failure ? Is there a 
"nextboot" thing planed for zfs ?

What do you think ? How do you address the problem ?



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