Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 27 Sep 2016 15:53:22 +0700
From:      Victor Sudakov <vas@mpeks.tomsk.su>
To:        Mike Tancsa <mike@sentex.net>
Cc:        freebsd-questions@freebsd.org
Subject:   Re: complete clone/restore from a ZFS-based system replication stream
Message-ID:  <20160927085322.GA96393@admin.sibptus.transneft.ru>
In-Reply-To: <688eec35-bc7b-ae05-b765-106933b522d1@sentex.net>
References:  <20160926154720.GA75556@admin.sibptus.transneft.ru> <688eec35-bc7b-ae05-b765-106933b522d1@sentex.net>

next in thread | previous in thread | raw e-mail | index | archive | help
Mike Tancsa wrote:
> > 
> > I have a complete dump of a working system created by 
> > 'zfs send -Rv zroot@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@test1 into foobar1@test1
would receive full stream of zroot/var@test1 into foobar1/var@test1
would receive full stream of zroot/var/mail@test1 into foobar1/var/mail@test1
would receive full stream of zroot/var/crash@test1 into foobar1/var/crash@test1
would receive full stream of zroot/var/tmp@test1 into foobar1/var/tmp@test1
would receive full stream of zroot/var/audit@test1 into foobar1/var/audit@test1
would receive full stream of zroot/var/log@test1 into foobar1/var/log@test1
would receive full stream of zroot/tmp@test1 into foobar1/tmp@test1
would receive full stream of zroot/ROOT@test1 into foobar1/ROOT@test1
would receive full stream of zroot/ROOT/test1@2016-08-22-21:58:22 into foobar1/ROOT/test1@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@sibptus.tomsk.ru



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