LINUX

3 formas de forzar el desmontaje en Linux que muestran «el dispositivo está ocupado»

cómo forzar el desmontaje en linux

En algunas situaciones, cuando intenta desmontar un sistema de archivos, especialmente NFS, muestra el mensaje «el dispositivo está ocupado». Esto sucede a menudo cuando el servidor NFS tiene algunos problemas (principalmente inalcanzable) y tiene un montaje NFS suave.

Hay diferentes formas y opciones que podemos probar si falla el desmontaje normal de NFS. En este tutorial, explicaré cómo realizar un desmontaje forzado en Linux.

En nuestro escenario, tenemos un sistema de archivos NFS montado en /var/linoxide directorio.

Primero usemos el comando df para mostrar todos los directorios montados.

# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 20G 1.3G 18G 7% /
devtmpfs 236M 0 236M 0% /dev
tmpfs 245M 0 245M 0% /dev/shm
tmpfs 245M 8.4M 237M 4% /run
tmpfs 245M 0 245M 0% /sys/fs/cgroup
tmpfs 49M 0 49M 0% /run/user/0
10.128.20.241:/var/linoxide 20G 1.3G 18G 7% /mnt/nfs/linoxide_srv
10.128.20.241:/home 20G 1.3G 18G 7% /mnt/nfs/home_srv

Cuando intentamos desmontar la partición remota, tenemos un mensaje de error. El siguiente ejemplo muestra que el desmontaje falla porque el dispositivo está ocupado:

# umount /mnt/nfs/linoxide_srv/
umount.nfs4: /mnt/nfs/linoxide_srv: device is busy

1) Con lsof

El comando lsof (listar archivos abiertos) muestra una lista de todos los archivos abiertos y los procesos asociados con ellos en un sistema de archivos, directorio o dispositivo específico. De forma predeterminada, enumera todos los archivos, bibliotecas compartidas y directorios que están abiertos actualmente y proporciona la mayor cantidad de información posible sobre cada uno de ellos.

Aquí podemos usar el comando lsof para encontrar el PID (id de proceso) correspondiente a nuestro punto de montaje y luego matar ese proceso.

# lsof /mnt/nfs/linoxide_srv/
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 24098 root cwd DIR 253,1 4096 519062 /mnt/nfs/linoxide_srv
bash 24125 root cwd DIR 253,1 4096 519062 /mnt/nfs/linoxide_srv
vim 24144 linoxide cwd DIR 253,1 4096 519062 /mnt/nfs/linoxide_srv

Aquí tenemos los 3 PID del proceso usando el directorio montado. Puede ver el comando vim, lo que significa que el usuario ‘linóxido’ está editando un archivo. Puede informar al usuario que detenga su acción o finalice el proceso.

Ahora, veamos los resultados:

# lsof /mnt/nfs/linoxide_srv/
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 24098 root cwd DIR 253,1 4096 519062 /mnt/nfs/linoxide_srv
bash 24125 root cwd DIR 253,1 4096 519062 /mnt/nfs/linoxide_srv

Puede ver que nuestro usuario ha detenido su modificación, pero todavía tenemos el comando bash en ejecución, pero no sabemos por qué. Ahora podemos matar los dos procesos con el comando kill.

Ahora mataremos el primer proceso de bash

# kill -9 24098

Podemos verificar el resultado

# lsof /mnt/nfs/linoxide_srv/
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 24125 root cwd DIR 253,1 4096 519062 /mnt/nfs/linoxide_srv

Podemos ver que se mata un proceso

# kill -9 24125

Ahora verifiquemos el segundo proceso.

# lsof /mnt/nfs/linoxide_srv/

Ahora intentemos desmontar la carpeta.

# umount /mnt/nfs/linoxide_srv/
umount: /mnt/nfs/linoxide_srv/: not mounted

Nuestra acción ha desmontado automáticamente la carpeta, pero verifiquemos con el comando df.

# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 20G 1.3G 18G 7% /
devtmpfs 236M 0 236M 0% /dev
tmpfs 245M 0 245M 0% /dev/shm
tmpfs 245M 8.3M 237M 4% /run
tmpfs 245M 0 245M 0% /sys/fs/cgroup
tmpfs 49M 0 49M 0% /run/user/0
10.128.20.241:/home 20G 1.3G 18G 7% /mnt/nfs/home_srv

Desde la salida, podemos ver el directorio /mnt/nfs/linoxide_srv se ha desmontado del sistema.

2) Con fusor

El comando fuser (buscar procesos de usuario) ayuda a identificar los procesos que le impiden desmontar sistemas de archivos. Busca procesos de usuario asociados con los archivos, directorios o puntos de montaje del sistema de archivos que proporcione como argumentos de la línea de comandos.

# fuser /mnt/nfs/linoxide_srv/
/mnt/nfs/linoxide_srv: 24191c

Podemos usar el comando fuser con -m opción que enumera todos los procesos que acceden a los archivos o al punto de montaje en el sistema de archivos y -v opción que muestra un resultado como el comando ps con PID, usuario y el comando ejecutado.

# fuser -mv /mnt/nfs/linoxide_srv/
 USER PID ACCESS COMMAND
/mnt/nfs/linoxide_srv:
 root kernel mount /mnt/nfs/home_srv
 root 24191 ..c.. bash
 root 24275 ..c.. bash
 linoxide 24290 ..c.. vim

Puede ver el comando en ejecución.

# fuser -mv /mnt/nfs/linoxide_srv/
 USER PID ACCESS COMMAND
/mnt/nfs/linoxide_srv:
 root kernel mount /mnt/nfs/home_srv
 root 24191 ..c.. bash
 root 24275 ..c.. bash

Con el comando fuser, es posible matar directamente el proceso en ejecución con -k opción sin comando de matar

# fuser -kmv /mnt/nfs/linoxide_srv/
 USER PID ACCESS COMMAND
/mnt/nfs/linoxide_srv:
 root kernel mount /mnt/nfs/home_srv
 root 24191 ..c.. bash
 root 24275 ..c.. bash

Comprobar el resultado

# fuser -mv /mnt/nfs/linoxide_srv/
 USER PID ACCESS COMMAND
/mnt/nfs/linoxide_srv:
 root kernel mount /mnt/nfs/home_srv

Parece que solo la montura está en ejecución. Intentemos desmontar la carpeta

# umount /mnt/nfs/linoxide_srv/

No tenemos más mensajes de error. Verifique el punto de montaje

# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 20G 1.3G 18G 7% /
devtmpfs 236M 0 236M 0% /dev
tmpfs 245M 0 245M 0% /dev/shm
tmpfs 245M 8.3M 237M 4% /run
tmpfs 245M 0 245M 0% /sys/fs/cgroup
tmpfs 49M 0 49M 0% /run/user/0
10.128.20.241:/home 20G 1.3G 18G 7% /mnt/nfs/home_srv

Podemos ver que el /mnt/nfs/linoxide_srv La carpeta se ha desmontado como queremos.

3) Desmontaje perezoso

El comando Umount tiene un -l opción para realizar un desmontaje diferido (requiere kernel 2.4.11 o posterior). El montaje se eliminará del espacio de nombres del sistema de archivos (por lo que no lo verá debajo /mnt/nfs/linoxide más) pero permanece montado, por lo que los programas que acceden a él pueden continuar haciéndolo. Cuando salga el último programa que accedió a él, se producirá el desmontaje.

# fuser -mv /mnt/nfs/linoxide_srv/
 USER PID ACCESS COMMAND
/mnt/nfs/linoxide_srv:
 root kernel mount /mnt/nfs/home_srv
 root 24366 ..c.. bash
 root 24381 ..c.. bash
 linoxide 24398 ..c.. vim

Podemos ver que la carpeta está ocupada. Ahora intentemos hacer un desmontaje perezoso

# umount -l /mnt/nfs/linoxide_srv/

No tenemos un mensaje de error. Comprobaremos si el comando se estaba ejecutando sin error.

# echo $?
0

Ahora revisemos el punto de montaje

# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 20G 1.3G 18G 7% /
devtmpfs 236M 0 236M 0% /dev
tmpfs 245M 0 245M 0% /dev/shm
tmpfs 245M 8.4M 237M 4% /run
tmpfs 245M 0 245M 0% /sys/fs/cgroup
tmpfs 49M 0 49M 0% /run/user/0
10.128.20.241:/home 20G 1.3G 18G 7% /mnt/nfs/home_srv

Podemos ver que el punto de montaje /mnt/nfs/linoxide_srv no vuelve a aparecer pero como dijimos anteriormente, por ejemplo, nuestro usuario ‘linóxido’ todavía está modificando su archivo, puede crear nuevos archivos, etc. En el servidor, podemos ver el archivo que el usuario está modificando.

Podemos necesitar desmontar una partición debido a una emergencia o simplemente para quitar un dispositivo, pero puede ocurrir un problema porque ese dispositivo está ocupado. Es importante examinar todos los procesos del sistema antes de tomar una decisión sobre el método para resolver el problema. Los comandos lsof y fuser facilitan la identificación de los procesos que le impiden desmontar un sistema de archivos. Finalmente, si desea usar un desmontaje forzado, use -f opción.

# umount -f -l / mnt / nfs / linoxide_srv /

Conclusión

En este tutorial, aprendimos las diferentes opciones disponibles cuando no puede desmontar en un sistema de estilo Linux y Unix. Todas las opciones de forzar desmontaje mencionadas deberían funcionar en todas las distribuciones de Linux como Ubuntu, Mint, etc.

Si tiene alguna pregunta o comentario, no dude en dejar un comentario.

Related Read: NFS Mount Options in Linux

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar