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