¿Cómo (limpiamente) desmontar sshfs cuando se monta en un punto de montaje NFS?

15

Mi compañero de trabajo tiene una computadora de escritorio /homecompartida en nuestro servidor de archivos. He desarrollado un script de Perl para sshfsmontar un determinado directorio en otro host SSH que funciona bien en mi computadora portátil.

En su computadora, el script no desmonta sshfsal final y deja impuro el punto de montaje. No encontré ninguna forma de recuperar el punto de montaje que no sea reiniciar. Después de algunas pruebas, descubrí que la diferencia entre nuestras configuraciones es que la suya /homeestá en NFS. En su /tmpobra funciona a la perfección.

Después del montaje, durante la operación del script, todo está bien. Pero cuando matar el sshfsproceso que está catalogado como <defunc>por pshasta que el proceso padre (el script de Perl) salidas. Cuando se ejecuta un sshfscomando sin procesar en el shell, el problema aún ocurre.

Una ls -dlsalida para el punto de montaje se ve así (como se recuerda, no tengo una copia real de la salida del shell a la mano):

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

(solo signos de interrogación para la mayoría de la información, al menos todos los detalles del permiso)

El montaje sshfs todavía aparece en la lista, mountpero una operación de desmontaje falla con permiso de error denegado incluso cuando se hace como root.

Busqué en Google pero solo encontré muchas comparaciones entre sshfs y NFS para ejecutar sistemas de archivos de red. ¿Cómo puedo hacer un montaje / desmontaje sshfs en el directorio NFS de forma segura?

Daniel Böhmer
fuente

Respuestas:

38

Debería poder desmontar el recurso compartido sshfs ejecutando:

 fusermount -u /path/to/sshfs/share
CJ Travis
fuente
Intenté esto pero obtuve el permiso denegado . Por supuesto, un ordinario umountdebe fallar cuando se ejecuta como usuario no root.
Daniel Böhmer
Lo más probable es que la razón por la que no puede desmontar (con cualquier método) es porque su directorio de inicio se monta desde NFS donde se exporta con la root_squashopción. Por lo tanto, root no tiene autoridad en su directorio de origen. Puede apagarlo, root_squashpero probablemente sea más seguro montarlo en otro lugar.
JFlo
2
Se me olvida cada vez que eso umounto fusermount -uno funciona, cuando el directorio se usa en alguna parte. Así que cdfuera del directorio antes de usar fusermount -uo usarlsof /my/local/mountpoint
eli
16

Simplemente elimine el proceso usando pkill y luego desmonte la ruta de la carpeta montada.

 pkill -kill -f "sshfs" && umount /path/to/sshfs/share
SAGAR
fuente
A veces tengo que hacer "sudo umount -f" o "sudo umount -l" en lugar de umount.
fchen
0
sudo diskutil umount force ~/mount/

Parece que este comando funciona en OS X.

Robert Mihai Ionas
fuente
66
¿Puede ampliar su respuesta para explicar qué hace este código y cómo aborda el problema? Se desaconseja el código inexplicable porque no enseña la solución. Gracias. de la cola de revisión
fixer1234
Esto es para OS X. La pregunta que se hace para Linux.
Duncan X Simpson