umount: Ziel ist beschäftigt

8

Ich habe montiert /devund sofort versucht abzusteigen:

$ 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

Ich habe gelesen, dass fuserProzesse, die auf den Mount-Punkt zugreifen, abgebrochen werden können, aber ich möchte verstehen, was in diesem einfachen Fall passiert. Verwendet lsofetwas den Mountpoint laut Ausgabe als aktuelles Arbeitsverzeichnis (cwd)?

Ich möchte nicht faul unmount verwenden.

Robert
quelle

Antworten:

11

Sie haben rbindein Dateisystem und Submounts bereitgestellt. Um die Bereitstellung eines Dateisystems aufzuheben, müssen Sie zuerst die Submounts aushängen (und das Gleiche gilt auch für die Submounts rekursiv). Aber pass auf dich auf!

mount --make-rslave m
umount -R m

Ohne den ersten Befehl besteht die Gefahr, dass alle Submounts auf der Quelle aufgrund der Mount-Weitergabe aufgehoben werden. In diesem Fall bedeutet das alle Sub-Mounts von /dev, was sich negativ auf Ihr laufendes System auswirken würde ;-).

Grundsätzlich ist die Mount-Ausbreitung eine massive Grubenfalle, die darauf wartet, dass Sie hineinfallen :-). Es scheint besser gewesen zu sein, wenn Bindungs-Mounts es standardmäßig deaktiviert hätten.


kdevtmpfsist der Kernel-Thread, der devtmpfs verwaltet. Das Aufheben der Bereitstellung von devtmpfs wird nicht verhindert. Dies liegt daran, dass der Kernel-Thread auf einem separaten Mount ausgeführt wird (wie einem Bind-Mount). Sie können diese ursprüngliche Montierung nicht sehen; Es befindet sich in einem separaten Mount-Namespace. Wenn Sie herausfinden möchten, warum in kdevtmpfsauftaucht lsof, weiß ich nicht, vielleicht betrachten Sie das als separate Frage.

sourcejedi
quelle