Search

Linux NFSマウントディレクトリをアンマウントできない

現象

NFSマウントを解除しようとしたときに下記のようなエラーが起きた。

# umount /mnt/test
umount.nfs: /mnt/test: device is busy
umount.nfs: /mnt/test: device is busy
umount.nfs: /mnt/test: device is busy

# umount -f /mnt/test
umount2: Device or resource busy
umount.nfs: /mnt/test: device is busy
umount2: Device or resource busy
umount.nfs: /mnt/test: device is busy
umount2: Device or resource busy
umount.nfs: /mnt/test: device is busy

調査

lsofコマンドで、開いているファイルのプロセスを特定できる。
PortやPID、プロセス名からファイルがオープンしている情報を表示するコマンド。

# lsof|grep '/mnt/test'
clamd   2690       root   28r      DIR               0,21     4096         96 /mnt/test (192.168.1.2:******)
clamd   2690       root   29r      DIR               0,21     4096     388731 /mnt/test/a (192.168.1.2:******)
clamd   2690       root   30r      DIR               0,21     4096     388732 /mnt/test/a/20150226 (192.168.1.2:******)
clamd   2690       root   31r      DIR               0,21     4096     388748 /mnt/test/a/20150226/var (192.168.1.2:******)
・・・

※また、fuserをつかっても同様なことが可能。
fuser:ファイルやソケットを使用しているプロセスを特定できる。
上記の場合だと下記のように出力される。

# fuser -va /mnt/test
                     USER        PID ACCESS COMMAND
/mnt/test:
                     root       2690 ...e. clamd

解決

clamdをkillするか停止して、再度umountすればOK.

※参考にさせていただきました。ありがとうございます!

http://ambiesoft.fam.cx/blog/archives/122
http://webkaru.net/linux/fuser-command/
http://qiita.com/yusabana/items/fd03ee4c90a0d1e0a8c6