唯一のNFSエクスポートがZFSの場合、nfs-kernel-server.serviceをどのように初期化しますか?

唯一のNFSエクスポートがZFSの場合、nfs-kernel-server.serviceをどのように初期化しますか?

エクスポートする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リダイレクトで編集したので、シェルプロンプトにもかかわらずルートとして実行する必要があるかもしれません$

おすすめ記事