卸載磁盤時報錯:'Umount Target is Busy'
在 Linux 命令行中卸載磁盤并不復雜,只需要執(zhí)行 umount 命令即可:
但有時候可能會遇到報錯信息,比如:umount: target is busy
那么該怎樣解決這個問題呢?
在介紹如何解決問題之前,我們先來了解一下產生這個問題的原因。
Umount target is busy 錯誤產生的原因
原因很簡單,要卸載的目標設備還仍在使用中。
如果有足夠的權限,任何進程都可能正在使用你即將要卸載的驅動器。為了防止數據丟失,所以系統內核不允許你將其卸載。
那么怎么解決這個問題呢?
提示:如果后臺正在進行數據傳輸,可能會因為強制卸載驅動器而造成數據丟失。
基于某種原因,有時候我們需要強制卸載驅動器。比如因某種原因造成的驅動器沒有相應。強制卸載驅動器有多種方法,比如:
- 殺掉進程;
- 使用強制卸載(force unmount)
- 使用延遲卸載(lazy unmount)
我們先來看看第一種方法。
方法1:通過殺掉進程來強制卸載驅動器
這應該是強制卸載磁盤驅動器的最佳方式,因為不管怎樣,你都會殺掉這個進程。
首先第一步是要找到造成該問題的??進程的 PID????梢允褂?lsof 命令,如下所示:
找到 pid 后,要??終止這個進程??就很簡單了:
終止進程后,再次執(zhí)行磁盤驅動器 umount 命令就可以了:
方法2:強制卸載(適用于網絡文件系統 Network file systems)
當處理網路文件系統的時候,強制卸載是遇到 'umount: target is busy' 問題時首選的方法。但是對于本地文件系統,其結果可能會不一樣。
強制卸載磁盤,可以使用 umount 命令的 -f 選項,如下所示:
方法3:使用延遲卸載(lazy unmount)
該方法不會立刻卸載目標,而只是將其從命名空間中刪除掉。當目標驅動器不被使用的時候,再將其卸載掉。使用這個方法,你可能無法確定目標是否已經被卸載掉,這就像薛定諤的卸載。我們之所以介紹這種方法,是因為它是最柔和(無害)的一種方法。
使用延遲卸載,可以在 umount 命令中添加 -l 選項,如下所示:
上述我們介紹的三種方法中,我更傾向于使用第一種方法,即直接殺掉占用磁盤的進程。當然大家可以根據各自實際情況選擇合適的方法。