Forzar el desmontaje del directorio montado en NFS [cerrado]

163

Tengo un directorio montado en NFS en una máquina Linux que se ha bloqueado. Intenté forzar un desmontaje, pero no parece funcionar:

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

Si escribo " mount", parece que el directorio ya no está montado, pero se cuelga si lo hago " ls /mnt/data", y si trato de eliminar el punto de montaje, obtengo:

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

¿Hay algo que pueda hacer aparte de reiniciar la máquina?

Lorin Hochstein
fuente
3
Estoy de acuerdo, quien haya votado para cerrar esto está seriamente confundido. Este problema me ha afectado durante años, y la respuesta a continuación, umount -l, para Linux, es la primera solución que he encontrado que funcionó.
Lizardx
1
ok, pero puedes encontrarlo en Super User. aunque no veo por qué la pregunta no se movió en lugar de cerrarse.
deeenes
For umount --forceintentará más difícil desmontarlo -vo -vvvincluso revelará más cuál es el problema con el montaje. Así que trate de:umount -vvv --force /badmount
Gaoithe
55
@deeenes Debido a que esta pregunta se hizo en septiembre de 2008, y Super User no se lanzó hasta julio de 2009 ;-)
Martin Tournoij
@Carpetsmoker pero se marcó como fuera de tema en 2013
pista

Respuestas:

254

Puede probar un desmontaje perezoso:

umount -l
tessein
fuente
3
Esto no se implementa en todas partes. No lo tengo en FreeBSD, por ejemplo.
Daniel Papasian
28
@Daniel: claro, pero es una pregunta de Linux (incluso etiquetada como tal), y Linux la tiene.
Jürgen A. Erhard el
55
Intenté este comando en Ubuntu y no funcionó.
Kieran Andrews el
1
Esto funcionó para mí (Slackware 14.0). Tenía un montaje CIFS, no NFS, que estaba colgando todo (incluido lsof). Causé el problema al romper un script de respaldo que estoy escribiendo. El script monta y desmonta el directorio, pero algo sobre salir de rsyncmi montura se equivocó . No sabía sobre el desmontaje perezoso. Puede haber sido el dispositivo NAS causando todos los problemas. Después de desmontar con éxito, resultó que tuve que reiniciar el dispositivo antes de poder montarlo nuevamente.
arroz
10
@KieranAndrews y cualquier otra persona en Ubuntu, inténtalo fusermount -uz /path/to/file. ¡Funcionó un encanto para mí! :)
Matt Fletcher
78

Si el servidor NFS desapareció y no puede volver a conectarlo, un truco que uso es agregar un alias a la interfaz con la IP del servidor NFS (en este ejemplo, 192.0.2.55).

Linux

El comando para eso es más o menos como:

ifconfig eth0:fakenfs 192.0.2.55 netmask 255.255.255.255

Donde 192.0.2.55 es la IP del servidor NFS que desapareció. Entonces debería poder hacer ping a la dirección, y también debería poder desmontar el sistema de archivos (use unmount -f). Luego debe destruir la interfaz con alias para que ya no enrute el tráfico al antiguo servidor NFS para usted con:

ifconfig eth0:fakenfs down

FreeBSD y sistemas operativos similares

El comando sería algo como:

ifconfig em0 alias 192.0.2.55 netmask 255.255.255.255

Y luego para eliminarlo:

ifconfig em0 delete 192.0.2.55

man ifconfig (8) para más!

Daniel Papasian
fuente
55
Una combinación de ifconfig eth0:fakenfs ...' and umount -f -l / my / mount / dir 'resolvió el problema para mí.
pts
1
yo también, el problema de desmontaje me impide suspender mi computadora portátil, por lo que esta solución es realmente útil. También hice mi propio script para automatizar.
albfan
Entonces, ¿para eliminar un alias de Linux, sería ifconfig eth0:fakenfs delete? ¿O estoy buscando algo más? Al igual que ifconfig eth0 delete 192.0.2.55?
Ehtesh Choudhury
2
@Shurane En Linux, eliminar un alias con ifconfig eth0:fakenfs downdebería hacer el truco.
Sven
1
gracias, brillante trabajo! en mi caso, el servidor nfs volvió a estar en línea y todavía no podía desmontarlo, esto fue el truco, saludos
nmirceac
20

Intenta correr

lsof | grep /mnt/data

Eso debería enumerar cualquier proceso que esté accediendo a / mnt / data que evitaría que se desmonte.

Ryan Ahearn
fuente
1
Definitivamente útil, aunque no me salvó por completo. Pero útil.
James T Snell
2
Cuando lsof se cuelga para siempre, intente "lsof -b" (hay un error de lsof relacionado con NFS, consulte, por ejemplo, bugzilla.redhat.com/show_bug.cgi?id=962755 ).
dr0i
11

Tuve el mismo problema, y ​​ninguno umount /path -f, ninguno umount.nfs /path -f, ninguno fuser -km /pathfunciona

finalmente encontré una solución simple>. <

sudo /etc/init.d/nfs-common restart, entonces hagamos lo simple umount;-)

Daniel N.
fuente
55
Trabajó para mí conumount -f -l ...
mivk
En ubuntu server 14.04 tuve que hacerlo sudo service nfs-kernel-server restart, pero su respuesta definitivamente me llevó al camino correcto, ¡gracias!
Murmel
4

Su servidor NFS desapareció.

Idealmente, su mejor opción es si el servidor NFS regresa.

Si no, el "umount -f" debería haber hecho el truco. SIEMPRE no funciona, pero a menudo lo hará.

Si sabe qué procesos están UTILIZANDO el sistema de archivos NFS, podría intentar eliminar esos procesos y luego tal vez funcionaría un desmontaje.

Finalmente, supongo que necesitas reiniciar.

Además, NO monte suavemente sus unidades NFS. Utiliza montajes rígidos para garantizar que funcionaron. Eso es necesario si estás escribiendo.


fuente
El montaje suave frente al duro parece ser una cuestión de casos de uso. Sí, un montaje suave causaría que los archivos que se están escribiendo actualmente se rompan si el servidor NFS deja de funcionar por alguna razón, y por lo tanto podría no ser un directorio crítico del sistema adecuado, pero para una unidad con archivos no críticos como música y películas funcionaría muy bien
zrajm
4

No se pudo encontrar una respuesta que funcione aquí; pero en Linux puede ejecutar "umount.nfs4 / volume -f" y definitivamente lo desmonta.

Dave
fuente
44
¿No es umount.nfs4 un subcomando para umount? En otras palabras, umount -f /some/mountpointes lo mismo que umount.nfs4 /some/mountpoint -f.
Ville
1
Interesante. A mi lado (después de que desapareció el servidor NFS): umountllamadas umount.nfs, se cuelga para siempre (independientemente de la opción). umount.nfs4 /mnt -flleva bastante tiempo, pero se completa. umount.nfs4 /mnt -lse completa de inmediato (quizás porque no espera los procesos).
Tino