umount: la cible est occupée

8

J'ai monté /devet essayé immédiatement de démonter:

$ 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

J'ai lu que cela fuserpeut tuer les processus accédant au point de montage, mais je voudrais comprendre ce qui se passe dans ce cas simple. Selon la lsofsortie, quelque chose utilise-t-il le point de montage comme répertoire de travail actuel (cwd)?

Je ne veux pas utiliser le démontage paresseux.

robert
la source

Réponses:

11

Vous avez utilisé rbindpour monter un système de fichiers et des sous-montages. Afin de démonter un système de fichiers, vous devez d'abord démonter ses sous-montages (et la même chose pour leurs sous-montages, récursivement). Mais attention!

mount --make-rslave m
umount -R m

Sans la première commande, vous risquez de démonter tous les sous-montages sur la source , en raison de la propagation des montages . Dans ce cas, cela signifie tous les sous-supports de /dev, ce qui aurait de mauvais effets sur votre système en cours d'exécution ;-).

Fondamentalement, la propagation du montage est un piège à fosse massif qui vous attend pour y tomber :-). Il semble qu'il aurait été préférable que les montures de liaison le désactivent par défaut.


kdevtmpfsest le thread du noyau qui gère devtmpfs. Cela n'empêche pas le démontage de devtmpfs. En effet, le thread du noyau s'exécute sur un montage séparé (comme un montage de liaison). Vous ne pouvez pas voir cette monture d'origine; il se trouve dans un espace de noms de montage séparé. Si vous voulez essayer de comprendre pourquoi kdevtmpfsapparaît lsof, je ne sais pas, peut-être considérer cela comme une question distincte.

sourcejedi
la source