Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Linux umount 提示「device is busy」快速排查與解決

編輯:Linux 教學

前言

嘗試卸載掛載點時出現 umount: /mount/point: target is busy,表示有進程正在存取該檔案系統。本文提供快速定位佔用進程並安全釋放的標準流程。

快速解決:fuser 釋放佔用進程


# 查看佔用 /home 的進程
fuser -mv /home

# 強制殺掉所有佔用 /home 的進程並卸載
fuser -km /home
umount /home

-k 發送 SIGKILL,-m 指定掛載點/檔案系統。

進階排查:lsof 精確定位


# 列出佔用 /dev/vdc1 的所有進程
lsof /dev/vdc1

# 列出佔用掛載點 /data 的進程
lsof /data

# 僅顯示進程 PID
lsof -t /data

輸出範例:


COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
bash    1234 root  cwd    DIR  253,0     4096    2 /data
vim     5678 root    4r   REG  253,0  102400   12 /data/log.txt

再根據 PID 決定是正常結束進程(kill 1234)或強制終止(kill -9 5678)。

常見佔用場景與處理

場景典型進程處理方式
Shell 當前目錄在掛載點bash, zshcd / 切換目錄後再 umount
編輯器開啟檔案vim, vi, nano存檔退出編輯器
服務讀寫資料mysql, nginx, java優雅停止服務 systemctl stop mysql
掛載點下有子掛載--先遞歸卸載子掛載 umount -R /mnt/parent
NFS/SMB 遠端掛載殘留rpc, smbd確認網路連線,必要時 umount -f -l

特殊參數:懶人卸載與強制卸載


# -l, --lazy:懶人卸載,立即分離檔案系統層級,等無進程使用時真正卸載
umount -l /mnt/data

# -f, --force:強制卸載(僅限 NFS 等網路檔案系統,本地 fs 可能導致資料損毀)
umount -f /mnt/nfs_share

警告:本地檔案系統(ext4, xfs 等)請避免使用 -f,極易造成檔案系統損壞。

完整處理流程範例


# 1. 嘗試正常卸載
umount /data
# umount: /data: target is busy

# 2. 定位佔用進程
lsof /data
# 或
fuser -mv /data

# 3. 正常結束進程(優先)
kill 1234 5678

# 4. 確認釋放
lsof /data
# 無輸出表示已釋放

# 5. 正常卸載
umount /data

# 6. 若仍失敗,檢查子掛載
mount | grep /data
umount /data/sub1
umount /data/sub2
umount /data

Read-only 檔案系統修復相關

若遇到 Read-only file system 錯誤導致需重新掛載:


# 1. 卸載(可能需 fuser -km)
fuser -km /data
umount /data

# 2. 檢查並修復檔案系統
fsck -y /dev/vdc1

# 3. 重新掛載
mount /dev/vdc1 /data

總結

  1. 優先用 lsof 或 fuser -mv 定位佔用進程
  2. 嘗試正常結束服務/進程,避免資料遺失
  3. 必要時 fuser -km 強制釋放
  4. 檢查並處理子掛載
  5. 本地檔案系統禁用 umount -f,網路檔案系統可考慮 -f -l
Copyright © Windows教程網 All Rights Reserved