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의 가동 시간을 포기한 후 최종적으로 출력을 확인하고 두 개의 오래된 구성을 발견했습니다. 설치되지 않은 루프백: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#

젠투 포럼 게시물또한 스왑 파일을 잠재적인 원인으로 나열했습니다. 요즘에는 파일로 스왑하는 일이 상당히 드물지만 cat /proc/swaps할당량이 제거를 막을 수 있는지 확실하지 않습니다.

답변3

파일 시스템을 크롤링하기 위해 lsof를 사용할 필요가 없으며 열려 있는 파일의 전체 목록과 grep을 사용하면 됩니다. 나는 이 반환이 덜 정확하기는 하지만 더 빨라야 한다는 것을 알았습니다. 작업이 완료되어야합니다.

lsof | grep '/path'

답변4

나에게 문제가 되는 프로세스는 chroot에서 실행되는 데몬입니다. chroot에 있으므로 lsof찾을 수 없습니다 fuser.

chroot에서 다른 것이 실행되고 있다고 의심되면 sudo ls -l /proc/*/root | grep chroot범인을 찾을 수 있습니다("chroot"를 chroot 경로로 바꾸십시오).

관련 정보