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?

Daniel Böhmer
fonte

Respostas:

38

Você deve conseguir desmontar o compartilhamento sshfs executando:

 fusermount -u /path/to/sshfs/share
CJ Travis
fonte
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
SAGAR
fonte
Às vezes eu tenho que fazer "sudo umount -f" ou "sudo umount -l" em vez de umount.
fchen
0
sudo diskutil umount force ~/mount/

Parece que este comando funciona no OS X.

Robert Mihai Ionas
fonte
6
Você pode expandir sua resposta para explicar o que esse código faz e como ele resolve o problema? Código inexplicável é desencorajado , porque não ensina a solução. Obrigado. da fila de revisão
fixer1234 13/02/2016
Isso é para o OS X. A pergunta feita para o Linux.
Duncan X Simpson