Eu tenho vários sistemas de arquivos ZFS destinados a serem exportados:
$ 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
[...]
Estes são os únicos sistemas de arquivos a serem exportados via NFS, portanto, eles não estão listados em /etc/exports
:
$ grep -v '^#' < /etc/exports | wc -c
0
Infelizmente, isso parece significar que o serviço do kernel nfs não registrará os vários serviços RPC necessários para o sistema ZFS exportar os sistemas de arquivos relevantes:
$ 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.
(adicionei uma quebra de linha no ponto marcado com \
para que a mensagem relevante fosse claramente exibida).
Como resultado, os serviços RPC necessários não estão registrados:
$ /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
Observe que, por exemplo, os serviços mount e stat não estão registrados. Portanto, o ZFS não pode exportar seus próprios sistemas de arquivos.
Estou vendo este problema na versão 8.8 do Debian:
$ 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
Isso costumava funcionar, mas como eu reinicio o servidor NFS muito raramente é possível que, na última vez que eu o inicializei, houvesse alguma entrada em /etc/exports
que teria evitado esse problema.
Acredito que configurei corretamente o ZFS para exportar os sistemas de arquivos:
$ 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'
Alguma idéia de como posso resolver isso? Eu poderia cortar essa condicional em /etc/init.d/nfs-kernel-server
...
if [ -f /etc/exports ] && grep -q '^[[:space:]]*[^#]*/' $export_files
then
do_modprobe nfsd
... mas isso parece deselegante e provável que seja revertido por futuras atualizações.
Alguma sugestão?