다음을 설치 /dev
하고 즉시 제거를 시도했습니다.
$ sudo mount -o rbind /dev m
$ sudo umount m
umount: /tmp/m: target is busy.
$ sudo lsof m
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
Output information may be incomplete.
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
kdevtmpfs 55 root cwd DIR 0,6 4420 2 m
kdevtmpfs 55 root rtd DIR 0,6 4420 2 m
마운트 지점에 액세스하는 프로세스를 종료할 수 있다는 내용을 읽었 fuser
지만 이 간단한 경우에 무슨 일이 일어나고 있는지 이해하고 싶습니다. 출력 에 따르면 lsof
마운트 지점을 현재 작업 디렉터리(cwd)로 사용한 사람이 있습니까?
지연된 제거를 사용하고 싶지 않습니다.
답변1
rbind
파일 시스템과 하위 마운트를 마운트 했습니다 . 파일 시스템을 마운트 해제하려면 먼저 해당 하위 마운트를 마운트 해제해야 합니다(하위 마운트도 반복적으로 마운트 해제해야 함). 하지만 조심하세요!
mount --make-rslave m
umount -R m
첫 번째 명령이 없으면 모든 하위 설치를 제거할 위험이 있습니다.원천, 설치 전파로 인해. 이 경우 이는 모든 하위 설치를 의미하며 /dev
실행 중인 시스템에 나쁜 영향을 미칩니다 ;-).
기본적으로 마운트 전파는 여러분이 빠지기를 기다리는 거대한 함정입니다 :-). 번들 마운트가 기본적으로 비활성화되어 있으면 더 좋을 것 같습니다.
kdevtmpfs
devtmpfs를 유지 관리하는 것은 커널 스레드입니다. devtmpfs가 마운트 해제되는 것을 방지하지는 않습니다. 이는 커널 스레드가 별도의 설치(예: 번들 설치)에서 실행되기 때문입니다. 원래 마운트는 볼 수 없습니다. 별도의 설치 네임스페이스에 있습니다. 왜 kdevtmpfs
그것이 나타나는지 알아내고 싶다면 lsof
, 아마도 그것을 별도의 질문으로 취급할 수도 있을 것입니다.