complete clone/restore from a ZFS-based system replication stream
Victor Sudakov
vas at mpeks.tomsk.su
Tue Sep 27 08:53:29 UTC 2016
Mike Tancsa wrote:
> >
> > I have a complete dump of a working system created by
> > 'zfs send -Rv zroot at test1 > test1.zfs '. I think it's called a
> > replication stream package. I also have a new hard drive. Then I
> > create the freebsd-boot, freebsd-swap and freebsd-zfs partitions on
> > the new drive, install the bootloader on it.
> >
> > Now what command exactly do I use to restore the system from
> > test1.zfs? I have tried "zfs receive" with different combinations of
> > options but each time I and with some error message like "destination
> > exists..."
> >
> > Please refer me to a good howto on restoring a system from a
> > replication stream package.
>
> Here are the steps I used to restore a "level zero" zfs file onto a
> new/fresh mirror.
[dd]
>
> #make sure /mnt2 exists
> zpool create -f -o altroot=/mnt2 -O canmount=off -m none zroot mirror
> /dev/ada0p3 /dev/ada1p3
>
> gzcat /mnt/zroot-.0.gz | zfs recv -vF zroot
Mike, that's very useful information, thank you very much. However, there are
a couple of questions left.
1. When you boot from this pool later on a restored system, don't the
"-o altroot=/mnt2 -O canmount=off" options prevent it from
working normally? I gather that "altroot" is not persistent across
reboots, but "canmount" probably is.
2. If you wanted to check "zfs recv" without actually restoring it,
what what you do? I keep getting the "cannot receive incremental stream" error:
# zpool create -f -o altroot=/mnt2 -O canmount=off -m none foobar1 /dev/vtbd2
# zfs receive -vFn foobar1 < /mnt/test1.zfs
would receive full stream of zroot at test1 into foobar1 at test1
would receive full stream of zroot/var at test1 into foobar1/var at test1
would receive full stream of zroot/var/mail at test1 into foobar1/var/mail at test1
would receive full stream of zroot/var/crash at test1 into foobar1/var/crash at test1
would receive full stream of zroot/var/tmp at test1 into foobar1/var/tmp at test1
would receive full stream of zroot/var/audit at test1 into foobar1/var/audit at test1
would receive full stream of zroot/var/log at test1 into foobar1/var/log at test1
would receive full stream of zroot/tmp at test1 into foobar1/tmp at test1
would receive full stream of zroot/ROOT at test1 into foobar1/ROOT at test1
would receive full stream of zroot/ROOT/test1 at 2016-08-22-21:58:22 into foobar1/ROOT/test1 at 2016-08-22-21:58:22
cannot receive incremental stream: destination 'foobar1/ROOT/test1' does not exist
#
>
> #import it, but its probably already there so dont worry about the error
> zpool import -f -o altroot=/mnt2 zroot
> zpool set bootfs=zroot/ROOT/default zroot
>
> ... You should now be able to boot off the restored mirror.
--
Victor Sudakov, VAS4-RIPE, VAS47-RIPN
sip:sudakov at sibptus.tomsk.ru
More information about the freebsd-questions
mailing list