zfs-root and "safe" atomic updates

Arnaud Houdelette tzim at tzim.net
Fri May 27 14:16:52 UTC 2011


On Fri, 27 May 2011 14:41:54 +0300, Andriy Gapon wrote:
> on 27/05/2011 14:08 tzim at tzim.net said the following:
>> 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 at old
>>  - zfs clone tank/root at 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
>
> Just for the records, I would like to poin out that kernel.old would
> be loaded
> from zfs:tank/root.
>

Yes indeed.

(...)

>> 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 ?
>
> I am not aware of any plans to implement nextboot for zfs as it would
> require at
> least some write support for zpool and there is none (for boot code)
> at the moment.
>

Could'nt the loader use a bit flag in the loader sector ?

Nextboot (or something equivalent) missing is the sole thing keeping me 
from removing ufs boot partition for remote servers.

>> What do you think ? How do you address the problem ?
>
> I have some patches that allow to boot a different loader or a kernel 
> from a
> different (non-bootfs) ZFS dataset:
> http://lists.freebsd.org/pipermail/freebsd-fs/2010-July/008976.html
> But that still requires access to zfs boot and/or loader command 
> interface.

Interesting though. Thanks.
Does the mentionned patch still works with latest 8-stable loader ?
And do you still have to change vfs.root.mountfrom once currdev set ?





More information about the freebsd-stable mailing list