umount: target occupato


8

Ho montato /deve ho provato immediatamente a smontare:

$ 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

Ho letto che fuserpuò uccidere i processi che accedono al mount point, ma vorrei capire cosa sta succedendo in questo semplice caso. Secondo l' lsofoutput, qualcosa usa il mountpoint come directory di lavoro corrente (cwd)?

Non desidero utilizzare lazy smontaggio.

Risposte:


11

In passato si rbindmontava un filesystem e i submount. Per smontare un filesystem, devi prima smontare i suoi sotto-montaggi (e lo stesso per i loro sotto-montaggi, ricorsivamente). Ma stai attento!

mount --make-rslave m
umount -R m

Senza il primo comando, si rischia di smontare tutti i sub-mount sulla sorgente , a causa della propagazione del mount. In questo caso ciò significa che tutti i sub-mount di /dev, che avrebbero effetti negativi sul tuo sistema in esecuzione ;-).

Fondamentalmente montare la propagazione è un'enorme trappola che ti aspetta per cadere dentro :-). Sembra che sarebbe stato meglio se i mount bind lo disabilitassero di default.


kdevtmpfsè il thread del kernel che mantiene devtmpfs. Non impedisce di smontare devtmpfs. Questo perché il thread del kernel gira su un mount separato (come un mount bind). Non puoi vedere quella montatura originale; è in uno spazio dei nomi di mount separato. Se vuoi provare a capire perché si kdevtmpfspresenta lsof, non lo so, forse considera una domanda separata.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.