zfsなのでnfsの設定もzfs set sharenfsで行うべきなのかもしれませんが、まずはufsと同様に/etc/exportsを使ってみました。
この場合、exportされたdirectoryのsubdirectoryを直接mountする場合に、そのsubdirectoryが別のzfs階層の場合にはそれも/etc/exportsに明示しないと駄目なようです。exportされたdirectory自体をmountすれば、そのsubdirectoryが別のzfs階層でその階層自体はexportされていなくても普通にアクセス可能です。
一方zfsでsharenfsを設定すると
# zfs set sharenfs="-network XXX.XXX.XXX.XXX/XX -maproot=foo" hoge/hoge # zfs get sharenfs NAME PROPERTY VALUE SOURCE hoge/hoge sharenfs -network XXX.XXX.XXX.XXX/XX -maproot=foo local hoge/hoge/hoge sharenfs -network XXX.XXX.XXX.XXX/XX -maproot=foo inherited from hoge/hoge
となり、subdirectoryも自動的に直接mount可能になるようです。やっぱりzfs set sharenfsを使ったほうが良いようです。
P.S. sharenfsを使う場合でも、/etc/exportsの
V4: / -network XXX.XXX.XXX.XXX/XX
は残しておかないとNFSv4にならないのでubuntuからアクセスできなくなってしまいます。