Watch at Ease看見世界,讀懂生活。

科技 · 實用指南

umount 顯示「target is busy」?使用 -l 或 -f 前先找出仍存活的參照

先證明精確掛載點、子掛載、程序或核心持有者及掛載命名空間;乾淨釋放擁有者,再把延遲或強制卸載限於有記錄的例外。

原創示意圖:umount 顯示「target is busy」?使用 -l 或 -f 前先找出仍存活的參照
原創示意圖:執行 findmnt -R 檢查每個子掛載。即使父目錄沒有明顯程序,下層檔案系統仍可阻止父樹移除;確認影響後由深到淺處理。 Watch at Ease

先證明精確掛載點、子掛載、程序或核心持有者及掛載命名空間;乾淨釋放擁有者,再把延遲或強制卸載限於有記錄的例外。

「Target is busy」表示核心仍有有效參照或掛載樹限制,不會指出是哪一種。 先以 findmnt 確認精確目標與來源;裝置名稱、bind 路徑和掛載點不能互換。 先檢查子掛載;下層檔案系統可讓父掛載保持忙碌。

變更前凍結精確掛載證據

保存完整錯誤、目標路徑、有效使用者、主機、容器或服務情境與失敗命令。取證時保留掛載,用 findmnt -T 及明確欄位把路徑綁定真實記錄。

不要假定裝置、掛載點和 bind 視圖相同。涉及命名空間時記錄 mountinfo 的掛載與父 ID,並在原失敗命名空間蒐證。

找程序前先畫出子掛載樹

執行 findmnt -R 檢查每個子掛載。即使父目錄沒有明顯程序,下層檔案系統仍可阻止父樹移除;確認影響後由深到淺處理。

遞迴卸載是主動樹操作,不是略過審核。shared 或 slave 傳播可把事件複製到同儕樹,改設定前先讀 mountinfo 標籤。

分類可見程序與核心參照

以足夠權限執行 fuser -vmM。存取字母可區分目前目錄、執行檔、開啟檔、根目錄與記憶體映射;先認明命令與服務。

不要預設 fuser -k,因為它會使用 SIGKILL。空輸出也只代表目前權限和命名空間可見範圍,手冊明確記錄這些盲點。

檢查命名空間、bind 與服務邊界

掛載命名空間隔離程序看到的清單。比較服務、容器或使用者程序的 /proc/PID/mountinfo;主機 shell 可能看不到持有參照的樹。

bind、automount、NFS、loop、swap 或檔案系統專用持有者,應透過所屬子系統的支援生命週期釋放,並記錄核准動作與回復。

釋放擁有者並重試普通 umount

關閉檔案、移出目前目錄、停止已證明的服務或依序卸載子檔案系統。一次只改一項並重複證據,以便歸因。

重試普通 umount。成功才證明參照以正常路徑清除;再確認目標命名空間無掛載且服務健康。

把 -l 與 -f 當例外分支

umount -l 立刻從可見階層分離,參照稍後才清;util-linux 指出網路或帶子掛載的本機案例通常假定很快重開機。

umount -f 主要面向不可達 NFS,不能保證不掛住;核心文件警告可能失去資料且仍會 EBUSY。批准例外時要記錄範圍、風險與驗收。

用證據結案,而非只看路徑消失

保存前後 mountinfo 或 findmnt、已釋放的持有者或子系統、普通卸載成功或核准例外,以及原啟動路徑結果。確認沒有子掛載,其他命名空間也無意外副本。

本流程不授權終止程序、破壞容器、修改傳播、強制網路檔案系統或重開生產主機。完成代表精確參照已釐清、核准擁有者已釋放、目標命名空間乾淨且依賴服務健康。

原創示意圖:umount 顯示「target is busy」?使用 -l 或 -f 前先找出仍存活的參照
原創示意圖:重試普通 umount。成功才證明參照以正常路徑清除;再確認目標命名空間無掛載且服務健康。 Watch at Ease