umount: デバイスが使用中です。なぜ?

umount: デバイスが使用中です。なぜ?

実行すると、umount /path次のようになります。

umount: /path: device is busy.

ファイルシステムが大きいため、lsof +D /path現実的なオプションではありません。

lsof /path、何lsof +f -- /pathfuser /path返しません。fuser -v /path以下を提供します。

                  USER        PID ACCESS COMMAND
/path:            root     kernel mount /path

これは、使用されていないマウントされたすべてのファイルシステムに対して通常の現象です。

umount -lそしてumount -f私の状況には十分ではありません。

カーネルがこのファイルシステムが使用中であると考える理由をどのように知ることができますか?

答え1

私の問題の原因はnfs-kernel-serverエクスポートディレクトリのようです。nfs-kernel-server通常、開かれたファイルの後ろに配置される可能性があるため、lsofによってリストされませんfuser

停止するとディレクトリをnfs-kernel-server表示できます。umount

これまで、すべてのソリューションの例を含むページを作成しました。http://oletange.blogspot.com/2012/04/umount-device-is-busy-why.html

答え2

追加するブルースクレーン~のコメント上で、私が今この問題に遭遇した理由は役に立たないループバックのインストール。fuser -vm <mountpoint>/の出力を確認し、lsof +D <mountpoint>いくつかの古いnfs-kernel-serverが実行されていることを確認し、クォータをオフにしてaを試み(および失敗)、924日mountの稼働時間を放棄した後、最終的に出力を確認して2つの古い設定を見つけました。インストールされていないループバック:cat /proc/mountsumount -f <mountpoint>losetup

parsley:/mnt# cat /proc/mounts 
rootfs / rootfs rw 0 0
none /sys sysfs rw,nosuid,nodev,noexec 0 0
none /proc proc rw,nosuid,nodev,noexec 0 0
udev /dev tmpfs rw,size=10240k,mode=755 0 0
/dev/mapper/stuff-root / ext3 rw,errors=remount-ro,data=ordered 0 0
tmpfs /lib/init/rw tmpfs rw,nosuid,mode=755 0 0
usbfs /proc/bus/usb usbfs rw,nosuid,nodev,noexec 0 0
tmpfs /dev/shm tmpfs rw,nosuid,nodev 0 0
devpts /dev/pts devpts rw,nosuid,noexec,gid=5,mode=620 0 0
fusectl /sys/fs/fuse/connections fusectl rw 0 0
/dev/dm-2 /mnt/big ext3 rw,errors=remount-ro,data=ordered,jqfmt=vfsv0,usrjquota=aquota.user 0 0

それから

parsley:/mnt# fuser -vm /mnt/big/
parsley:/mnt# lsof +D big
parsley:/mnt# umount -f /mnt/big/
umount2: Device or resource busy
umount: /mnt/big: device is busy
umount2: Device or resource busy
umount: /mnt/big: device is busy

parsley:/mnt# losetup -a    
/dev/loop0: [fd02]:59 (/mnt/big/dot-dropbox.ext2)
/dev/loop1: [fd02]:59 (/mnt/big/dot-dropbox.ext2)

parsley:/mnt# losetup -d /dev/loop0
parsley:/mnt# losetup -d /dev/loop1
parsley:/mnt# losetup -a
parsley:/mnt# umount big/
parsley:/mnt#

Gentooフォーラム投稿また、スワップファイルを潜在的な原因としてリストしました。最近では、ファイルにスワップすることは非常にまれですが、cat /proc/swapsクォータが削除を防ぐことができるかどうかはわかりません。

答え3

ファイルシステムをクロールするためにlsofを使用する必要はなく、開いているファイルの完全なリストとgrepを使用するだけです。私はこのリターンがあまり正確ではありませんが、より速くする必要があることを知りました。作業を完了する必要があります。

lsof | grep '/path'

答え4

私にとって問題となるプロセスは、chrootで実行されるデーモンです。 chrootにあるのでlsof見つかりませんfuser

chrootで他のものが実行されていると思われる場合は、犯人を見つけることができますsudo ls -l /proc/*/root | grep chroot(「chroot」をchrootパスに置き換えます)。

関連情報