テクノロジー · 実用ガイド
umount の「target is busy」— -l や -f の前に生きている参照を特定する
正確なマウント、子マウント、プロセスまたはカーネルの保持、マウント名前空間を証明します。所有者を正常に解放し、lazy/force は記録された例外に限定します。

正確なマウント、子マウント、プロセスまたはカーネルの保持、マウント名前空間を証明します。所有者を正常に解放し、lazy/force は記録された例外に限定します。
「Target is busy」は有効な参照またはマウントツリー制約が残る意味で、原因の種類までは示しません。 プロセス調査前に findmnt で正確な target と source を確定します。デバイス名、bind パス、マウントポイントは同義ではありません。 子マウントを先に確認します。下位の別ファイルシステムが親の解除を妨げます。
変更前に正確なマウント証拠を固定する
完全なエラー、対象パス、実効ユーザー、ホスト、コンテナまたはサービス文脈、失敗コマンドを保存します。証拠採取中はマウントを残し、findmnt -T と明示列で実際の記録へ結び付けます。
デバイス、マウントポイント、bind 表示を同一視しません。名前空間が関係する場合は mountinfo の mount ID と parent ID を記録し、失敗した同じ名前空間から採取します。
プロセスより先に子マウントを描く
findmnt -R で全子マウントを確認します。親に明白なプロセスがなくても下位 FS が親ツリーを維持します。所有と影響を確認後、深い順に処理します。
recursive unmount は意図的なツリー操作です。shared/slave 伝播はイベントを peer へ複製するため、変更前に mountinfo のタグを読みます。
見えるプロセス参照とカーネル参照を分類する
十分な権限で fuser -vmM を実行します。文字は current directory、executable、open file、root、mmap を区別します。停止前にユーザー、コマンド、サービスを確認します。
fuser -k は既定で SIGKILL なので常用しません。空の出力も現在の権限と名前空間で見えないだけかもしれず、マニュアルに制限があります。
名前空間、bind、サービス境界を確認する
mount namespace はプロセスごとに見える一覧を分離します。サービスやコンテナの /proc/PID/mountinfo と比較し、ホスト shell と違うツリーを確認します。
bind、automount、NFS、loop、swap、FS 固有保持は所有 subsystem の正式な lifecycle で解除し、承認と rollback を記録します。
所有者を解放して通常の umount を再試行する
ファイルを閉じ、cwd を移し、証明されたサービスを停止し、子 FS を順に解除します。一度に一変更として findmnt/fuser を再取得します。
通常の umount を再試行します。成功は正常経路で参照が消えた証拠です。その後、対象名前空間での不在とサービス健全性を確認します。
-l と -f を例外分岐として扱う
umount -l は可視階層から直ちに分離し参照を後で清掃します。util-linux はネットワークや子マウント付きローカル FS で近い再起動を想定します。
umount -f は主に到達不能 NFS 向けで hang 回避を保証せず、カーネル文書はデータ損失と EBUSY 継続を警告します。例外なら理由、範囲、risk owner、検証を記録します。
見えなくなっただけでなく証拠で完了する
前後の mountinfo または findmnt、解放した holder/subsystem、通常 umount 成功または承認済み例外、元の起動経路の結果を保存します。子マウントと他 namespace の意図しないコピーも確認します。
この手順は process kill、container 破壊、propagation 変更、network FS の force、production reboot を承認しません。完了は参照を説明し、承認された所有者を解放し、対象 namespace が清潔で依存サービスが健全な状態です。
