Root on ZFS, copy drive

I have a FreeBSD install on a large disk that I wish to replace by an SSD. The disk has 3 gpt partitions (boot/swap/zfs) and I wish to fully copy the disk. So, I put the same GPT layout on the SSD, installed the bootcode, and then sent over the filesystem.

Code:
gpart create -s GPT ad10
# further gpart layout
..
zpool create tanknew ad10p3
zfs snapshot tank@now
zfs send -R tank@now | zfs receive -D -f tanknew

So far so good. Now I try booting from the zpool tanknew, which I expect to fail as it will try to mount root from zfs:tank. Indeed it fails, and gives me the option to mountroot from a different filesystem. I attempt zfs:tanknew, but this results in the same error.

So I went looking for solutions. I've mounted the tanknew fs in a different filesystem and attempted to rename it to tank. Now, this still doesn't work either. Next I tried getting a fresh /boot/zfs/zpool.cache in place, but it doesn't appear to make a difference either, so I'm stuck.

Any ideas on what last piece of magic is required before I can boot again?
 
No idea about your way, but when I had this problem, I simply created a mirror and then booted from the 2nd drive alone. Then, I simply "detach"-ed the first drive and voila ....

Of course, I created the GPT before :)
 
Did you set the pool mountpoint to "legacy"? You need to do it to mount zfs manually.

The wiki-pages are broken at the moment, but you can read about it here.

I'm booting from mirror, so I used this howto.
 
Yep, it's set to legacy.

Booting from my old disk up to the FreeBSD loader screen (where I can pick normal boot, single user etc), unplugging it, and letting it continue to boot from my SSD actually works. When I boot from just the SSD though, it gives the mountroot error.
 
It seems my zpool.cache was bugged after all. I found out by setting
Code:
vfs.zfs.debug=1
in the grub loader. After that I used a LiveFS cd to import and export my pool in order to create a new zpool.cache. Mounting the zfs:tank for a minute, copying the zpool.cache into the /boot/zfs/ dir and setting the mountpoint back to legacy did the trick.
 
Back
Top