확인하는 방법 fuser -vm /mnt/dir
은 루트로 실행해야합니다. 마운트 지점에 액세스중인 프로세스를 알려줍니다.
다른 방법은 lsof /mnt/dir
마운트에서 열린 각 파일을 표시하는 것입니다. 다시 루트로 실행하는 것이 가장 좋습니다.
이들 중 하나를 루트가 아닌 것으로 실행할 수 있지만 출력은 프로세스로 제한됩니다. 다른 사용자의 파일은 파일 시스템 마운트 해제를 방해하더라도 자동으로 표시되지 않습니다.
예:
Watt:~# fuser -vm /mnt/Zia/src
USER PID ACCESS COMMAND
/mnt/Zia/src: root kernel mount /mnt/Zia/src
anthony 24909 ..c.. bash
anthony 25041 F.c.. gvim
"액세스"필드는 액세스 방법을 알려줍니다. 이 경우 커널은 마운트로 사용하고 있습니다 (duh, 그러나 이것으로 만 마운트 해제는 정상입니다). bash
현재 작업 디렉토리로 설정하고 ( cd
언 마운트하기 전에 다른 디렉토리로 가져와야 함) gvim은 현재 디렉토리를 가지고 있으며 파일이 열려 있습니다 (그 gvim을 닫아야합니다).
Watt:~# lsof /mnt/Zia/src
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 24909 anthony cwd DIR 0,26 12288 3527682 /mnt/Zia/src/perl (zia.vpn.home:/home/anthony/src)
gvim 25041 anthony cwd DIR 0,26 12288 3527682 /mnt/Zia/src/perl (zia.vpn.home:/home/anthony/src)
gvim 25041 anthony 6u REG 0,26 16384 3526219 /mnt/Zia/src/perl/.utf8.c.swp (zia.vpn.home:/home/anthony/src)
이 출력에서 bash 및 gvim의 현재 디렉토리를 유형으로 볼 수 있습니다 DIR
. gvim이 쓰기 위해 연 파일을 볼 수도 있습니다.
문제를 해결하는 방법 :
fuser
있다 -k
: 신호 (기본 보내드립니다 옵션 SIGKILL
(가) 마운트 사용하여 각 프로세스를). 이것은 마운트가 사용 중지되는 것을 막는 다소 강력한 방법입니다. (물론 조심하십시오 SIGKILL
!)
umount
이 -l
게으른 마운트 해제를 수행 할 수있는 옵션을 선택합니다. 마운트는 파일 시스템 네임 스페이스에서 제거되므로 ( /mnt/Zia/src
이 예에서는 더 이상 표시되지 않음 ) 마운트 상태를 유지하므로 액세스하는 프로그램이 계속 그렇게 할 수 있습니다. 마지막으로 액세스 한 프로그램이 종료되면 마운트 해제가 실제로 발생합니다.
마운트 해제 실패의 최종 수정 가능한 원인이 하나 있으며 이는 NFS 서버가 다운되는 것입니다. 여기서는 사용할 수 umount -f
있지만 그렇게하면 데이터가 손실 될 위험이 있습니다. (클라이언트가 서버에서 아직 확인하지 않은 쓰기를 캐시했을 수 있으며 해당 쓰기는 버려집니다. 그러나 이미 쓰기가 성공했다고 앱에 알려졌습니다.)