Problemas para exportar o FUSE via NFS

8

Eu tenho um sistema de arquivos FUSE auto-escrito que monto no meu servidor NFS no ponto de montagem /export/example/mount. Em seguida, exporto um diretório pai do FUSE via NFS. O /etc/exportscontém as opções nohide,crossmnt,subtree_check,ro,no_root_squashe permite acesso gratuito a todos:

/export/example *(nohide,crossmnt,subtree_check,ro,no_root_squash)

Eu posso montar essa exportação no meu cliente NFS e acessá-lo. Assim que eu acesso o FUSE no NFS, meu cliente trava até umounto NFS (e eu preciso usar a opção -fpara fazer isso).

Eu tentei montar o FUSE como meu usuário ativo e como root. Os resultados são os mesmos.

O servidor está executando um Ubuntu 12.04, o cliente um SuSE 9.3. O FUSE é escrito em Python e funciona localmente sem nenhum problema. Somente a exportação via NFS falha. Não tenho restrições de segurança, pois tudo isso está em uma rede privada apenas com usuários confiáveis.

Alguém tem uma idéia do que poderia causar meu problema ou (ainda melhor) como resolver o problema?

Pensei em substituir o NFS pelo SSHFS para solucionar o problema, mas isso não funciona porque o sistema do cliente é muito antigo para oferecer suporte ao SSHFS (pois é baseado no FUSE e o FUSE não é suportado).

Alfe
fonte
Você tentou a allow_otheropção sshfs mount?
Skarap #
Sim eu fiz. Infelizmente, sem sucesso. Entretanto, enquanto isso desligamos o hardware antigo com o sistema antigo, essa pergunta não é mais interessante. Talvez eu deva fechá-lo ... ;-)
Alfe 14/04
Você encontrou uma solução ? 5 anos depois, tive o mesmo problema. Uma partição fusível (s3fs) montado em um subdiretório de um NFS servido diretório não pode ser visto pelo cliente NFS (mesmo com NFS4) ...
Matthieu G
Você usou crossmnt? E o lado do fusível (o s3fs) permite o uso por outros usuários (há uma opção de montagem para isso também). Não esqueça que o fusível é o espaço do usuário (destinado a ser usado por um único usuário) enquanto o nfs é multiusuário.
Alfe

Respostas:

7

A maioria das distribuições Linux é fornecida com um kernel que não permite exportar um sistema de arquivos montado no FUSE usando o NFSv2 ou o NFSv3. Suas opções são: 1. Implemente seu sistema de arquivos no espaço do kernel. 2. Exporte-o no NFSv4, o que exigiria um fsid =

Eu mesmo uso 2. Na ilustração abaixo, os comandos iniciados com #são executados no servidor, os comandos iniciados com $são executados no cliente.

Esta é a minha configuração de servidor, como você pode ver, estou exportando um ponto de montagem do FUSE:

# mount | tail -n1
convmvfs on /mnt/gb2312 type fuse.convmvfs (rw,nosuid,nodev,relatime,user_id=0,group_id=0)
# grep gb2312 /etc/exports 
/mnt/gb2312     192.168.0.0/16(no_subtree_check,fsid=0)

Aqui está o que eu fiz no meu cliente:

$ sudo mount -t nfs4 server:/ /mnt/
$ ls /mnt
Downloads  IMAGES  Library  lost+found

Para verificar se sua falha foi causada pela exportação do fusível no NFS v2 / v3, exporte esse ponto de montagem especificamente sem o NFS v4 (fsid) e verifique se você recebe um erro:

# exportfs -a
exportfs: /mnt/gb2312 requires fsid= for NFS export

Se no servidor você exportar o ponto de montagem desmontado e montá-lo com o fusível posteriormente, você deverá ver em seu log se tentar usar o cliente nfs:

# tail /var/log/syslog
Aug 18 03:54:31 server rpc.mountd[17183]: Cannot export /mnt/gb2312, possibly unsupported filesystem or fsid= required
Aug 18 04:00:52 server rpc.mountd[17183]: Caught signal 15, un-registering and exiting.
Tankman 六四
fonte
0

por padrão, a exportação de submounts por nfs está desativada. O curso de ação recomendado é também exportar o submount e fazer com que o cliente o monte também.

hildred
fonte
Sim, eu sei, mas, como escrevi, tentei várias combinações das opções de montagem que deveriam permitir exportar o conteúdo dos submounts. De fato, com imagens ISO montadas na planície, isso funciona perfeitamente. Somente com meu FUSE ele falha. E não consigo montar esse FUSE no cliente porque esse host é tão antigo que não suporta o FUSE. Toda a idéia desse FUSE via NFS é apenas para permitir que o cliente acesse os recursos desse FUSE que não pode ser executado sozinho.
Alfe
Você precisa exportar / exportar / exemplo / montar e montá-lo a partir do cliente.
Hildred