Device or resource busy で umount できないときの解決方法

  • URLをコピーしました!

Linux でマウントポイントをアンマウントしようとした際、以下のようなエラーが出ることがあります。

umount: /mnt: target is busy.
umount: /mnt: Device or resource busy

これは、対象のマウントポイントがまだ使用中であるために発生します。
例えば、他のプロセスがそのディレクトリを開いていたり、シェルのカレントディレクトリになっていたりするケースです。

目次

主な原因

  1. シェルがマウントポイントをカレントディレクトリにしている
    cd で別のディレクトリに移動しないとアンマウントできません。
  2. プロセスがそのマウントポイント配下のファイルを使用中
    → データベース、アプリケーション、シェルのバックグラウンドジョブなど。
  3. NFS や外部ストレージがハングしている
    → ネットワーク不調やプロセスの異常で busy 状態が続く場合。

解決方法

1. 現在のディレクトリを確認

自分のシェルがそのディレクトリを掴んでいないか確認します。

pwd

もし /mnt やその配下にいる場合は、ホームなどに移動します。

cd ~

2. 使用中プロセスを特定する(lsof

lsof コマンドでマウントポイントを使用しているプロセスを確認できます。

sudo lsof +D /mnt

またはマウントポイント単位で調べる場合:

sudo lsof /mnt

出力例:

COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
bash     1234 user  cwd    DIR  8,1     4096    2 /mnt

3. 使用中プロセスを特定する(fuser

fuser コマンドでも同様に確認可能です。

sudo fuser -m /mnt

出力例:

/mnt: 1234c

プロセス ID が表示されるので、必要に応じて終了させます。

sudo kill -9 1234

4. 強制的にアンマウントする(最終手段)

どうしてもアンマウントできない場合、強制オプションを使います。

sudo umount -l /mnt   # lazy umount(参照が切れるまで遅延解除)
sudo umount -f /mnt   # 強制 umount(NFS などで使用)

⚠️ 強制アンマウントはデータ破損のリスクがあるため、通常は プロセスを停止してから 実行してください。

まとめ

  • 原因の大半は「そのディレクトリをプロセスが使用中」
  • lsoffuser で使用プロセスを確認し、必要に応じて停止する。
  • 自分がそのディレクトリにいる場合は cd で移動するだけで解決することも多い。
  • 最終手段として umount -l または umount -f を検討。

👉 実運用では「NFS の切断」や「大量プロセスによる利用」が原因のことも多いため、強制アンマウント前に必ず原因特定することが重要です。

目次