linux - filesystem - Monta un dispositivo ocupado
umount ''/'' umount/: el destino está ocupado (7)
¡¡SÍ!! Hay una manera de desconectar un dispositivo ocupado de inmediato (incluso si está ocupado y no se puede desmontar con fuerza). Puede limpiar todo más tarde:
umount -l /PATH/OF/BUSY-DEVICE
umount -f /PATH/OF/BUSY-NFS(NETWORK-FILE-SYSTEM)
NOTA:
Estos comandos pueden interrumpir un proceso en ejecución, causar la pérdida de datos O archivos corruptos abiertos. Los programas que acceden a los archivos DEVICE / NFS de destino pueden arrojar errores O no pueden funcionar correctamente después de desmontarlos por la fuerza.
Intente ejecutar estos comandos cuando NO esté dentro de la carpeta / unidad / dispositivo montados.
Tengo varias unidades de samba a las que acceden múltiples usuarios a diario. Ya tengo un código para reconocer unidades compartidas (de una tabla SQL) y montarlas en un directorio especial donde todos los usuarios puedan acceder a ellas.
Quiero saber, si elimino una unidad de mi tabla SQL (desconectándola de manera efectiva) cómo, o incluso si hay una manera de desmontar un dispositivo ocupado? Hasta ahora he encontrado que ninguna forma de desmontaje no funciona.
Ignorando la posibilidad de destruir datos, ¿es posible desmontar un dispositivo que se está leyendo actualmente?
Asegúrese de no estar todavía en el dispositivo montado cuando intenta desmontar.
Echa un vistazo a umount2
:
Linux 2.1.116 agregó la llamada al sistema umount2 (), que, como umount (), desmonta un objetivo, pero permite indicadores adicionales que controlan el comportamiento de la operación:
MNT_FORCE (desde Linux 2.1.116) Fuerce desmontar incluso si está ocupado. (Solo para montajes NFS). MNT_DETACH (desde Linux 2.4.11) Realice un desmontaje lento: haga que el punto de montaje no esté disponible para los nuevos accesos, y realice el desmontaje cuando el punto de montaje deje de estar ocupado. MNT_EXPIRE (desde Linux 2.6.8) Marque el punto de montaje como caducado. Si un punto de montaje no está actualmente en uso, una llamada inicial a umount2 () con este indicador falla con el error EAGAIN, pero marca el punto de montaje como caducado. El punto de montaje permanece expirado siempre que no sea accedido por ningún proceso. Una segunda llamada a umount2 () que especifica MNT_EXPIRE desmonta un punto de montaje vencido. Este indicador no se puede especificar con MNT_FORCE o MNT_DETACH. Valor de retorno
En caso de éxito, se devuelve cero. En caso de error, se devuelve -1, y errno se establece de forma adecuada.
Intente lo siguiente, pero antes de ejecutarlo, tenga en cuenta que el indicador -k
matará cualquier proceso en ejecución manteniendo el dispositivo ocupado.
La bandera -i
hace que el fuser
pregunte antes de matar.
fuser -kim /address # kill any processes accessing file
unmount /address
Otra alternativa cuando algo funciona es editar /etc/fstab
, agregar la bandera noauto
y reiniciar la máquina. El dispositivo no se montará, y cuando haya terminado de hacer lo que sea, quite la bandera y reinicie de nuevo.
Si es posible, ubiquemos / identifiquemos el proceso ocupado, eliminemos el proceso y luego desmontemos el recurso compartido de samba para minimizar el daño.
lsof | grep ''/dev/sda1''
lsof | grep ''/dev/sda1''
(o lo que sea que el dispositivo montado sea para el proceso de destino)pkill target_process
(mata el proceso ocupado por nombre |kill PID
|killall target_process
)umount /dev/sda1
(o lo que sea que el dispositivo montado sea)
Verifique los sistemas de archivos NFS exportados con exportfs -v. Si se encuentra, elimine con exportfs -d share: / directory. Estos no aparecen en el listado fuser / lsof y pueden evitar que umount tenga éxito.