다음 명령 시퀀스는 CentOS 7(커널 버전: 3.10.0-327.10.1.el7.x86_64)에서 실패합니다.
[hidden]$ mkdir -p A B/a C/b
[hidden]$ sudo mount --bind A B/a
[hidden]$ sudo mount --rbind B C/b
[hidden]$ sudo mount --make-rslave C/b
[hidden]$ sudo umount C/b/a
[hidden]$ sudo umount C/b
[hidden]$ rmdir C/b
rmdir: failed to remove ‘C/b’: Device or resource busy
mount
, cat /proc/mounts
, cat /etc/mtab
, , 디렉토리를 사용하는 프로세스는 표시 sudo lsof
되지 않습니다 . inode와 구별된다는 것은 해당 디렉토리 가 성공적으로 마운트 해제되었음을 의미합니다.sudo fuser C/b
C/b
stat C/b
B
/dev
이 명령은 rbind 및 샌드박스를 시도했을 때 발견한 문제를 재현하기 위한 최소한의 예입니다. /proc
그러나 샌드박스를 파괴하려고 할 때 실패했습니다. make-rslave
그렇지 않으면 아래 하위 설치가 /dev/
제거되어 시스템이 엉망이 됩니다.
이 명령은 Ubuntu 14.04(커널 버전 3.13.xx) 및 Fedora 23(커널 버전 4.x)에서 작동합니다.
내 질문은 어떤 이유로 CentOS 7을 계속 사용해야 하는 경우 어떻게 이 문제를 해결하고 샌드박스를 완전히 파괴할 수 있느냐는 것입니다.
답변1
umount -a
환경 내에서 시도해 보고 실패 하면 chroot
종료하세요 .umount -l
umount -R
(chroot) # umount -a
(chroot) # exit
(liveos) #
(liveos) # umount -R /mnt/point/
(liveos) # umount -l /mnt/point/
-R, --recursive
Recursively unmount each specified directory. Recursion for each directory will stop if any unmount
operation in the chain fails for any reason. The relationship between mountpoints is determined by
/proc/self/mountinfo entries. The filesystem must be specified by mountpoint path; a recursive
unmount by device name (or UUID) is unsupported.
-l, --lazy
Lazy unmount. Detach the filesystem from the file hierarchy now, and clean up all references to this
filesystem as soon as it is not busy anymore. (Requires kernel 2.4.11 or later.)