Como desmontar (de forma limpa) o sshfs quando montado em um ponto de montagem NFS?


15

Meu colega de trabalho tem um computador desktop /homecompartilhado em nosso servidor de arquivos. Eu desenvolvi um script Perl para sshfsmontar um determinado diretório em outro host SSH que funciona bem no meu laptop.

Em seu computador, o script falha ao desmontar sshfso final e deixa o ponto de montagem sujo. Não encontrei nenhuma maneira de recuperar o ponto de montagem além da reinicialização. Após alguns testes, descobri que a diferença entre nossas configurações é que a dele /homeestá no NFS. No dele /tmp, funciona perfeitamente.

Após a montagem, durante a operação do script, tudo está bem. Mas quando matar o sshfsprocesso é listado como <defunc>por psaté que o processo pai (o script Perl) saídas. Ao executar um sshfscomando bruto no shell, o problema ainda ocorre.

Uma ls -dlsaída para o ponto de montagem é semelhante a esta (como lembrado - não tenho uma cópia real da saída do shell em mãos):

? 1 ? ? 4096 Feb  9 15:37 file_archive/

(apenas pontos de interrogação para a maioria das informações, pelo menos todos os detalhes da permissão)

A montagem sshfs ainda é listada por, mountmas uma operação de desmontagem falha com a permissão de erro negada, mesmo ao fazer isso root.

Pesquisei no Google, mas só encontrei muitas comparações entre sshfs e NFS para executar sistemas de arquivos de rede. Como posso montar / desmontar um sshfs no diretório NFS com segurança?

Respostas:


38

Você deve conseguir desmontar o compartilhamento sshfs executando:

 fusermount -u /path/to/sshfs/share

Eu tentei isso, mas obtive permissão negada . Obviamente, um comum umountdeve falhar quando executado como usuário não root.
Daniel Böhmer

Provavelmente, o motivo pelo qual você não pode desmontar (com qualquer método) é porque o diretório inicial é montado a partir do NFS, onde é exportado com a root_squashopção Assim, a raiz não tem autoridade em seu diretório de origem. Você pode desligar, root_squashmas provavelmente é mais seguro montar em outro lugar.
JFlo

2
Eu esqueço sempre, isso umountou fusermount -unão funciona, quando o diretório é usado em algum lugar. Então, cdfora do diretório antes de usar fusermount -uou usolsof /my/local/mountpoint
eli

16

Apenas mate o processo usando pkill para e, em seguida, desmonte o caminho da pasta montada.

 pkill -kill -f "sshfs" && umount /path/to/sshfs/share

Às vezes eu tenho que fazer "sudo umount -f" ou "sudo umount -l" em vez de umount.
fchen

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.