umount:ターゲットはビジーです


8

私はマウント/devしてすぐにアンマウントしようとしました:

$ 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

fuserマウントポイントにアクセスするプロセスを強制終了する可能性があることを読みましたが、この単純なケースで何が起こっているのかを理解したいと思います。lsof出力によると、何かは現在の作業ディレクトリ(cwd)としてマウントポイントを使用しますか?

レイジーアンマウントを使用したくありません。

回答:


11

以前rbindはファイルシステムとサブマウントをマウントしていました。ファイルシステムをアンマウントするには、最初にそのサブマウントをアンマウントする必要があります(サブマウントについても同じです)。しかし、注意してください!

mount --make-rslave m
umount -R m

最初のコマンドがないと、マウントの伝搬により、ソース上のすべてのサブマウントがアンマウントされるリスクがあります。この場合、それはのすべてのサブマウントを意味/devし、実行中のシステムに悪影響を及ぼします;-)。

基本的にマウントの伝播は、あなたがそれに陥るのを待つ巨大な落とし穴です:-)。バインドマウントがデフォルトで無効にした方がよかったようです。


kdevtmpfsdevtmpfsを維持するカーネルスレッドです。devtmpfsのアンマウントを防ぐことはできません。これは、カーネルスレッドが(バインドマウントのように)別のマウントで実行されるためです。その元のマウントは見えません。別のマウント名前空間にあります。なぜにkdevtmpfs表示されるか試してみたい場合はlsof、わかりません。おそらく、別の質問だと考えてください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.