유일한 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리디렉션을 통해 편집했으므로 쉘 프롬프트에도 불구하고 루트로 실행해야 할 수도 있습니다 $.

관련 정보