現象
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