Questão o dispositivo sshfs está ocupado


Eu montei um sistema de arquivos remoto usando o sshfs (versão 2.8.4)

sshfs -o allow_root joeuser@example.com: ./example

mas a desmontagem falha

> fusermount -u example
umount: /home/joeuser/example: device is busy.
        (In some cases useful info about processes that use
         the device is found by lsof(8) or fuser(1))

Alguma idéia do que pode estar causando esse erro e como alguém pode consertá-lo?


20


origem




Respostas:


Algum programa está usando um arquivo no sistema de arquivos que você está tentando desmontar. Pode ser um arquivo aberto para leitura ou escrita, um diretório atual ou alguns casos mais obscuros. Pode até ser devido a um diretório no sistema de arquivos ser um ponto de montagem.

Para investigar, corra lsof +f -- example. Ele vai dizer o que o processo (es) está usando o sistema de arquivos. Faça o seu próprio julgamento para fazer com que eles fechem arquivos, matem-los ou adiem a operação de desmontagem.


9



Estranhamente, lsof não mostrou um processo de gvfsd-archive, que foi deixado por ter aberto (e fechado?) Um arquivo de uma GUI de gerenciador de arquivos. Então, verifique também ps aux | grep gvfsd-archive. - alexei


Eu acho que você quer uma desmontada preguiçosa:

sudo umount -l example

27



Eu acho que sua sugestão está incorreta. De acordo com a página de manual preguiçoso Detach the filesystem from the filesystem hierarchy now, and cleanup all references to the filesystem *as soon as it is not busy* anymore. Por isso, não resolverá o problema original. Concordou com @Gilles, lsof deve ajudar aqui.
Na verdade, isso funcionou para mim. O lsof não conseguiu encontrar nenhum arquivo aberto, mas umount -l trabalhado. - gerrit
Essa solução também funcionou para mim! - Dan
Experimentou o mesmo problema com sshfs, isso funcionou para mim também. - Orun


Executando o Ubuntu, man fusermount fala sobre um -z opção, que é documentada como "desmontar preguiçoso". Parece estar relacionado, mas precisa de uma confirmação, que é dada por esta outra página de manual: fusermount (man.he.net), que diz “desmontar preguiçoso (funciona mesmo se o recurso ainda estiver ocupado)”. É preciso usá-lo com a -u, a -z opção sozinha, produzirá um erro. Eu tentei o -z opção, e pode confirmar o truque, mas isso parece muito com um truque: o que ele faz exatamente? Faz com que seja desmontado automaticamente assim que o diretório não estiver mais ocupado? Eu não sei, não documentado, tão inseguro.

Então, aqui está outra opção, mais detalhada, mas mais segura: tenta desmontar até obter sucesso, o tempo necessário, em um loop.

echo -n "Unmounting...";
fusermount -u -q "$MOUNT_POINT";
OK="$?";

while [ "$OK" != "0" ]
do
   sleep 1;
   echo -n ".";
   fusermount -u -q "$MOUNT_POINT";
   OK="$?";
done

echo;

Há um feedback mínimo de progresso, para que se saiba o que está acontecendo e não acredite que esteja enforcado.

Esta opção é aceitável de um script de shell; para interação de linha de comando, o uso do -z A opção é mais útil, mas provavelmente é necessário estar ciente de que a página man não documenta isso e pode haver dúvidas sobre o que ela faz exatamente.


2





Eu só tive esse problema e não pude kill -9 o processo de leitura do sistema de arquivos montado. kill -9 não funcionou mesmo depois fusermount -zu /mount/point ou umount -l /mount/point (que funcionou). A única coisa que funcionou foi pkill -9 sshfs.


2



fusermount -zu /mount/point trabalhou para mim. Obrigado! - ostrokach


Muitas vezes vejo "dispositivo ocupado" com sshfs quando tenho uma janela de terminal aberta para um diretório no compartilhamento sshfs. Sair do terminal ou alterar os diretórios para um compartilhamento local, em seguida, executar o fusermount -u resolve meus problemas.


1





No OS X, tente:

diskutil unmount force /mount/point

0