umount: el objetivo está ocupado

8

He montado /deve inmediatamente he intentado desmontar:

$ sudo mount -o rbind /dev m
$ sudo umount m
umount: /tmp/m: target is busy.
$ sudo lsof m
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
      Output information may be incomplete.
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
kdevtmpfs  55 root  cwd    DIR    0,6     4420    2 m
kdevtmpfs  55 root  rtd    DIR    0,6     4420    2 m

He leído que fuserpuede matar procesos que acceden al punto de montaje, pero me gustaría entender lo que está sucediendo en este caso simple. Según la lsofsalida, ¿algo usa el punto de montaje como directorio de trabajo actual (cwd)?

No quiero usar el desmontaje perezoso.

robert
fuente

Respuestas:

11

Que utilizó rbindpara montar un sistema de archivos y Submounts. Para desmontar un sistema de archivos, primero debe desmontar sus submontajes (y lo mismo para sus submontajes, recursivamente). Pero ten cuidado!

mount --make-rslave m
umount -R m

Sin el primer comando, corre el riesgo de desmontar todos los submontajes en la fuente , debido a la propagación del montaje. En este caso, eso significa todos los submontajes de /dev, que tendrían efectos negativos en su sistema en ejecución ;-).

Básicamente, la propagación de montura es una trampa de pozo masiva esperando que caigas en ella :-). Parece que hubiera sido mejor si los montajes de enlace lo desactivaran por defecto.


kdevtmpfses el hilo del núcleo que mantiene devtmpfs. No impide desmontar devtmpfs. Esto se debe a que el subproceso del núcleo se ejecuta en un montaje separado (como un montaje de enlace). No puedes ver esa montura original; está en un espacio de nombres de montaje separado. Si quieres probar y averiguar por qué kdevtmpfsaparece lsof, no lo sé, quizás consideres esa una pregunta por separado.

sourcejedi
fuente