Forçar desmontagem do diretório montado em NFS [fechado]

163

Eu tenho um diretório montado em NFS em uma máquina Linux que foi interrompida. Tentei forçar uma desmontagem, mas não parece funcionar:

$ umount -f /mnt/data
$ umount2: Device or resource busy
$ umount: /mnt/data: device is busy

Se eu digitar " mount", parece que o diretório não está mais montado, mas trava se eu " ls /mnt/data" e, se eu tentar remover o ponto de montagem, obtenho:

$ rmdir /mnt/data
rmdir: /mnt/data: Device or resource busy

Há algo que eu possa fazer além de reiniciar a máquina?

Lorin Hochstein
fonte
3
Eu concordo, quem votou para fechar isso seriamente confuso. Esse problema me atormenta há anos, e a resposta abaixo, umount -l, para Linux, é a primeira solução que encontrei que funcionou.
Lizardx
1
ok, mas você pode encontrá-lo no Superusuário. embora eu não entenda por que a pergunta não foi movida em vez de fechada.
deeenes
For umount --forcetentará mais desmontar e / -vou -vvvmesmo revelará mais qual é o problema com o mount. Então tente:umount -vvv --force /badmount
gaoithe
5
@deeenes Porque esta pergunta foi feita em setembro de 2008, e Super User não foi lançado até junho de 2009 ;-)
Martin Tournoij
@Carpetsmoker mas foi marcado como off-topic em 2013
hintss

Respostas:

254

Você pode tentar uma desmontagem lenta:

umount -l
tessein
fonte
3
Isso não é implementado em todos os lugares. Eu não o tenho no FreeBSD, por exemplo.
Daniel Papasian
28
@ Daniel: claro, mas é uma questão do Linux (marcada como tal mesmo), e o Linux possui.
Jürgen A. Erhard
5
Eu tentei este comando no Ubuntu e não funcionou.
Kieran Andrews
1
Isso funcionou para mim (Slackware 14.0). Eu tinha uma montagem CIFS, não NFS, que estava pendurando tudo (inclusive lsof). Eu causei o problema interrompendo um script de backup que estou escrevendo. O script monta e desmonta o diretório, mas algo sobre quebrar a rsyncminha montagem. Eu não sabia sobre a desmontagem preguiçosa. Pode ter sido o dispositivo NAS causando todos os problemas. Depois de desmontar com sucesso, tive que reiniciar o dispositivo antes de poder montá-lo novamente.
arroz
10
@KieranAndrews e qualquer outra pessoa no Ubuntu, tente fusermount -uz /path/to/file. Trabalhou um charme para mim! :)
Matt Fletcher
78

Se o servidor NFS desapareceu e você não pode colocá-lo novamente online, um truque que utilizo é adicionar um alias à interface com o IP do servidor NFS (neste exemplo, 192.0.2.55).

Linux

O comando para isso é algo parecido com:

ifconfig eth0:fakenfs 192.0.2.55 netmask 255.255.255.255

Onde 192.0.2.55 é o IP do servidor NFS que foi embora. Você deve poder executar ping no endereço e também desmontar o sistema de arquivos (use unmount -f). Você deve destruir a interface com alias para não rotear mais o tráfego para o antigo servidor NFS para si mesmo com:

ifconfig eth0:fakenfs down

FreeBSD e sistemas operacionais similares

O comando seria algo como:

ifconfig em0 alias 192.0.2.55 netmask 255.255.255.255

E depois para removê-lo:

ifconfig em0 delete 192.0.2.55

man ifconfig (8) para mais!

Daniel Papasian
fonte
5
Uma combinação de ifconfig eth0:fakenfs ...' and umount -f -l / my / mount / dir 'resolveu o problema para mim.
pts
1
eu também, o problema de desmontar me impede de suspender meu laptop, então esta solução é realmente útil. Eu criei meu próprio script para automatizar também.
Albfan
Então, para remover um alias do Linux, seria ifconfig eth0:fakenfs delete? Ou estou procurando outra coisa? Gosta ifconfig eth0 delete 192.0.2.55?
Ehtesh Choudhury
2
@Shurane No Linux, remover um apelido com ifconfig eth0:fakenfs downdeve fazer o truque.
Sven
1
obrigado, trabalho brilhante ao redor! no meu caso o servidor NFS estava de volta on-line e ainda não podia desmonte-o, este fez o truque, aplausos
nmirceac
20

Tente correr

lsof | grep /mnt/data

Isso deve listar qualquer processo que esteja acessando / mnt / data que impeça a desmontagem.

Ryan Ahearn
fonte
1
Definitivamente útil, mas não me salvou completamente. Mas útil.
James T Snell
2
Quando lsof trava para sempre, tente "lsof -b" (existe um bug lsof realizado no NFS, consulte, por exemplo, bugzilla.redhat.com/show_bug.cgi?id=962755 ).
dr0i
11

Eu tive o mesmo problema e nem umount /path -f, nem umount.nfs /path -f, nem fuser -km /path, funciona

finalmente encontrei uma solução simples>. <

sudo /etc/init.d/nfs-common restart, então vamos fazer o simples umount;-)

Daniel N.
fonte
5
Trabalhou para mim comumount -f -l ...
mivk
No servidor ubuntu 14.04 eu precisava sudo service nfs-kernel-server restart, mas sua resposta definitivamente me levou ao caminho certo, obrigado!
Murmel 25/03
4

Seu servidor NFS desapareceu.

Idealmente, sua melhor aposta é se o servidor NFS voltar.

Caso contrário, o "umount -f" deveria ter feito o truque. SEMPRE não funciona, mas geralmente funciona.

Se você souber quais processos estão USANDO o sistema de arquivos NFS, tente matá-los e talvez uma desmontagem funcione.

Finalmente, acho que você precisa reiniciar.

Além disso, NÃO monte suas unidades NFS de forma suave. Você usa suportes rígidos para garantir que eles funcionem. Isso é necessário se você estiver escrevendo.


fonte
A montagem suave versus dura parece ser uma questão de casos de uso. Sim, uma montagem suave faria com que os arquivos atualmente gravados fossem quebrados se o servidor NFS fosse desativado por algum motivo e, portanto, poderia não ser um diretório crítico do sistema adequado, mas para uma unidade com arquivos não críticos, como músicas e filmes, funcionaria bem.
Zrajm
4

Não foi possível encontrar uma resposta funcional aqui; mas no linux você pode executar "umount.nfs4 / volume -f" e definitivamente desmonta-o.

Dave
fonte
4
Umount.nfs4 não é um subcomando para umount? Em outras palavras, umount -f /some/mountpointé o mesmo que umount.nfs4 /some/mountpoint -f.
Ville
1
Interessante. Ao meu lado (depois que o NFS-Server desapareceu): umountchamadas umount.nfs, trava para sempre (independentemente da opção). umount.nfs4 /mnt -fleva muito tempo, mas é concluído. umount.nfs4 /mnt -ltermina imediatamente (talvez porque não aguarde processos).
Tino