Averiguar qué aplicación impide el desmontaje de un dispositivo de almacenamiento

Típico error cuando se intenta desmontar un dispositivo que está siendo utilizado por alguna aplicación.

target is busy
        (In some cases useful info about processes that
         use the device is found by lsof(8) or fuser(1).)

Conocer qué aplicación impide desmontar un dispositivo de almacenamiento determinado

fuser: Se puede indicar el dispositivo o el punto de montaje.

fuser -m /dev/mapper/vg_ciworker1_wd-agentHome
/dev/mapper/vg_ciworker1_wd-agentHome: 19185c
 
fuser -m  /opt/bagent_home
/opt/bagent_home:    19185c

fuser: Eliminar el/los proceso/s que esté/n utilizando el dispositivo que se desea extraer.

fuser -k  /opt/bagent_home

lsof: Se debe indicar el punto de montaje, no el dispositivo (/dev/XXX).

lsof | grep -i /opt/bagent_home
 
bash      19185    root  cwd       DIR              253,2      4096          2 /opt/bagent_home
lsof      19314    root  cwd       DIR              253,2      4096          2 /opt/bagent_home
grep      19315    root  cwd       DIR              253,2      4096          2 /opt/bagent_home
lsof      19316    root  cwd       DIR              253,2      4096          2 /opt/bagent_home

NOTA: Debido a la tubería con grep es posible que se muestren otros procesos pertenecientes a los mismos programas lsof y grep. En el ejemplo anterior el proceso que impide el desmontaje del dispositivo montado en /opt/bagent_home es bash.

Forzar desmontaje de dispositivos con problemas / Sistemas de ficheros remotos con hosts caidos (smbfs / cifs, ntfs,…).

Ejemplo de punto de montaje cifs cuyo host remoto está caido.

umount //remote/data
umount: /mnt/data: device is busy.
        (In some cases useful info about processes that use
         the device is found by lsof(8) or fuser(1))
ls /mnt/data
ls: cannot access /mnt/data: Host is down
lsof | grep -i "/mnt/data"
lsof: WARNING: can't stat() cifs file system /mnt/data
      Output information may be incomplete.

Solución: usar la opción “Lazy umount”.

umount -l /mnt/data
       The umount command detaches the mentioned file system(s) from the
       file hierarchy.  A file system is specified by giving the directory
       where it has been mounted.  Giving the special device on which the
       file system lives may also work, but is obsolete, mainly because it
       will fail in case this device was mounted on more than one directory.

       Note that a file system cannot be unmounted when it is 'busy' - for
       example, when there are open files on it, or when some process has
       its working directory there, or when a swap file on it is in use.
       The offending process could even be umount itself - it opens libc,
       and libc in its turn may open for example locale files.  A lazy
       unmount avoids this problem.