エクスポートするZFSファイルシステムが複数あります。
$ sudo zfs get sharenfs
NAME PROPERTY VALUE SOURCE
zpool0 sharenfs off local
zpool0/books sharenfs [email protected]/24 local
zpool0/music sharenfs [email protected]/24 local
zpool0/photo sharenfs [email protected]/24 local
zpool0/video sharenfs [email protected]/24 local
[...]
これはNFS経由でエクスポートしたい唯一のファイルシステムなので、リストされていません/etc/exports
。
$ grep -v '^#' < /etc/exports | wc -c
0
残念ながら、これは、nfsカーネルサービスが関連ファイルシステムをエクスポートするためにZFSシステムに必要なさまざまなRPCサービスを登録しないことを意味するようです。
$ sudo systemctl status nfs-kernel-server.service
● nfs-kernel-server.service - LSB: Kernel NFS server support
Loaded: loaded (/etc/init.d/nfs-kernel-server)
Active: active (exited) since Sun 2017-06-25 13:18:48 IST; 10h ago
Process: 3867 ExecStart=/etc/init.d/nfs-kernel-server start (code=exited, status=0/SUCCESS)
Jun 25 13:18:48 jupiter nfs-kernel-server[3867]: \\
Not starting NFS kernel daemon: no exports. ... (warning).
Jun 25 13:18:48 jupiter systemd[1]: Started LSB: Kernel NFS server support.
\\
(関連メッセージを明確に表示するためにマークアップに改行を追加しました。)
したがって、必要なRPCサービスが登録されていません。
$ /usr/sbin/rpcinfo -p localhost
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
100024 1 udp 60457 status
100024 1 tcp 55306 status
mountやstatなどのサービスは登録されません。したがって、ZFS は独自のファイルシステムをエクスポートできません。
Debian 8.8 バージョンでは、この問題が表示されます。
$ dpkg -l nfs-kernel-server zfsutils-linux
[...]
ii nfs-kernel-server 1:1.2.8-9 amd64 support for NFS kernel server
ii zfsutils-linux 0.6.5.9-2~bpo8+1 amd64 command-line tools to manage OpenZFS filesystems
以前は機能していましたが、NFSサーバーをほとんど再起動していなかったため、/etc/exports
最後に起動したときにこの問題を回避するいくつかのエントリがあった可能性があります。
ファイルシステムをエクスポートするためにZFSを正しく設定したと思います。
$ grep -B2 ZFS_SHARE /etc/default/zfs
# Run `zfs share -a` during system start?
# nb: The shareiscsi, sharenfs, and sharesmb dataset properties.
ZFS_SHARE='yes'
この問題を解決する方法についてのアイデアはありますか?この条件を手動でハッキングできます/etc/init.d/nfs-kernel-server
...
if [ -f /etc/exports ] && grep -q '^[[:space:]]*[^#]*/' $export_files
then
do_modprobe nfsd
...しかし、これはスタイリッシュではないようで、今後のアップデートでキャンセルされる可能性があります。
どんな提案がありますか?
答え1
もう一度読んだ後Aaron Toponceの素晴らしいガイド/etc/exports
私は最善の解決策は彼が説明したようにダミーのエクスポートを入れることだと思います。ここ:
$ echo '/mnt localhost(ro)' >> /etc/exports
$ sudo /etc/init.d/nfs-kernel-server start
$ showmount -e hostname.example.com
Export list for hostname.example.com:
/mnt localhost
上記では/etc/exports
リダイレクトで編集したので、シェルプロンプトにもかかわらずルートとして実行する必要があるかもしれません$
。