ホストAで作成したzpool/zfsを、ホストBに持って行くのが どうもNetBSD9の ZFS では普通にできない。通常はホストAで zpool export して、ホストBのほうで zpool import すればよいと思うのだが、NetBSDのZFSでは export した瞬間に /etc/zfs/zpool.cache をきれいに消してしまうので 手係なくimportできなくなってしまうような気がする。
ホストAで、ホストB用のzpoolを作るために一時的に外付けHDDとして zpoo作成し、一通りファイルをコピーした後外してホストBに取り付ける、 という流れを想定すると、大まかにはこんな感じ。
前提として外付けHDDにFFS用のパーティションとZFS用の パーティションが共存していると仮定する。なぜなら、 NetBSD9でZFSだけのシステムは作れないので、2つのものがあるようにする。 ここでは、sd0aがFFSパーティションで、sd0eがZFSだとする。 sd0e に 「zp0」という名前で zpool を作るものとし、 先にFFSパーティションをnewfsしておいてマウント
newfs /dev/rsd0a mount -o log /dev/sd0a /altroot mkdir -p /altroot/etc/zfs
通常NetBSDのzpoolキャッシュは $ROOT/etc/zfs に書かれるので 先に mkdir しておく。続いてzpoolを作る。
zfs create -R /altroot zp0 sd0e
zfsのパーティションをいくつか作ってファイルをコピーしたりした後、 exportすると zpool.cache が消えちゃうのでバックアップを取ってから。
cp /altroot/etc/zfs/zpool.cache /altroot zfs export zp0 cp /altroot/zpool.cache /altroot/etc/zfs
いろいろ umount してホストBに外付けディスクを持って行く。つける。 以下ホストBで。zpool import -c オプションで zpool.cache ファイルを指定する。
mount /dev/sd0a /mnt zpool import -R /mnt -c /mnt/etc/zfs/zpool.cache -f zp0
これでくっつくはず。zpool.cacheを失ったらどうにもならん感じ? こわいな。