難しいね。
仮想マシン用のディスクイメージはsparseファイルで作るよね。 32GBイメージならこんな感じ。
dd if=/dev/zero of=vdisk.img seek=$((32*1024-1)) bs=1m count=1
ここにZFSを利用するOSを入れるとき、一度インストール完了して、 やり直そうとして、「ええい、もう一回最初からやり直しー」と思って、
dd if=/dev/zero of=vdisk.img seek=$((32*1024-1)) bs=1m count=1
で作り直そう、と思ってもこれ、だめ。
dd of= で指定したファイルがすでにある場合はそのファイルでseekしちゃうから ZEROデータにならず、前回作業したデータがそのまま残る。
なので、そこにインストールするOSがzpoolを利用するものだと 同じzpoolを使えない。zpool import で
One or more devices are missing from the system
と言われる。実際のHDDやSSDの場合は dd if=/dev/zero of=ディスク全体 bs=1m のようにして全消しするしかない。あるいは、poolを別の名前にする。
zpool import
すると2つ以上のpoolが見つかるので、importしたい方のIDを指定して 別名でimportする。
zpool import -f 878743281873824 newpool
zfsパーティションが自動マウントの場合はこれでOK。 legacyマウントの場合は /etc/fstab 内のpool名を書き換える。