reanimate ZFS pool after disk cloning and host changing

Ralf S. Engelschall rse+freebsd-current at FreeBSD.org
Thu Oct 11 11:45:29 PDT 2007


I've a FreeBSD 7-CURRENT (as of 2007-10-09) running in a VirtualBox
virtual machine and with all filesystems except /boot on ZFS. Now that
we switched to 7.0-PRERELEASE and 8-CURRENT I today created another
virtual machine and just cloned the disks (with "vboxmanage clonevdi",
but it doesn't matter here).

When I then booted the new virtual machine with the cloned disks, the
root filesystem couldn't be mounted during boot via "zfs:zp1/root" as
the ZFS pool "zp1" is no longer available.

So I booted into the Fixit environment from
"7.0-CURRENT-200709-i386-disc1.iso" and tried "zpool import". It was
able to detect the pool on device ad0s1f. The problem just is that the
hostid has changed (which is correct), so I thought I just have to
re-import the ZFS pool with "zfs import -R /zp1 -f zp1". This still
worked just fine: all filesystem were available under temporary /zp1
now (I had to use this alternative root or the Fixit environment is
immediately dead). But once I then reboot into the system, the ZFS pool
is again not found via "zfs:zp1/root"!

In tried multiple times with various ways in the Fixit environment:
"zfs import zp1" is denied because the hostid is different, "zfs import
-f zp1" does the trick (although breaks the Fixit environent) but
after reboot the ZFS pool again gone, "zfs import -R /zp1 -f zp1" does
also the trick but here again the ZFS pool is gone after reboot.

So, the silly question is: what is the correct way to reanimate a ZFS
pool after the host has changed, so that one can again directly boot
from from one of its filesystems (here "zp1/root")?

--
rse at FreeBSD.org                        Ralf S. Engelschall
FreeBSD.org/~rse                       rse at engelschall.com
FreeBSD committer                      www.engelschall.com



More information about the freebsd-current mailing list