상상하다
- NFS 공유가 마운트됩니다
/mnt/temp/dir
(다른 공유는 하위 디렉터리에 마운트됨). - 거기에 모든 것이 있지만
umount
, 그것은 잘 작동하지 않습니다(어쩌면umount /mnt/temp/dir
처음처럼 "중첩된" 공유를 제거하지 않을 수도 있습니다/mnt/temp/dir/subdir*
). - 그래요
mount -o bind /data/temp /mnt/temp
- 그래요
mount /mnt/temp/dir
- 나는 이것을 한다
mount /mnt/temp/dir/subdir1
. 그리고 그것은 훌륭하게 작동한다.
참고: /mnt/temp
원래 루트( /
) 파일 시스템 에서 호스팅 /dev/sda6
되었으며 /data
의 또 다른 파일 시스템입니다 /dev/sda8
.
질문
/mnt/temp/dir
루트 파일 시스템의 디렉터리를 삭제할 수 없습니다 .
# mount -o bind / /test/root
# rmdir /test/root/mnt/temp/dir
rmdir: failed to remove `dir': Device or resource busy
약간의 설명
/mnt/temp/dir
설치됨두 배, 아마도 루트 fs에서 한 번, /data
fs에서 한 번일 것입니다.
이것은 cat /proc/mounts
:
nfsserver:/some/share/ /mnt/temp/dir nfs rw,relatime(...) 0 0
nfsserver:/some/share/ /mnt/temp/dir nfs rw,relatime,(...) 0 0
더욱 흥미로운 점은 다음과 같습니다 cat /proc/1/mountinfo
.
29 20 0:18 / /mnt/temp/dir rw,relatime - nfs nfsserver:/some/share/ rw,(...)
33 31 0:18 / /mnt/temp/dir rw,relatime - nfs nfsserver:/some/share/ rw,(...)
보세요, 처음 두 숫자는다른.
커널 문서에 따르면이 두 필드의 경우:
(1) mount ID: unique identifier of the mount (may be reused after umount)
(2) parent ID: ID of parent (or of self for the top of the mount tree)
/data
또한 서로 다른 상위 20과 31(루트 fs 및 fs) 이 있습니다 . 다음을 참조하세요.
20 1 8:6 / / rw,relatime - ext4 /dev/sda6 rw,(...)
31 20 8:8 /temp /mnt/temp rw,relatime - ext4 /dev/sda8 rw,(...)
이 작업을 시도하면 umount /mnt/temp/dir
두 가지 오류 메시지가 나타납니다.
umount.nfs: /mnt/temp/dir: device is busy
umount.nfs: /mnt/temp/dir: device is busy
질문
어떻게 umount
"나쁜" 상태가 될 수 있습니까(설치 ID 29)?
umount(2)
시스템 호출 도 "설치 ID"가 아닌 경로를 매개변수로 사용합니다.
답변1
이는 테스트되지 않았지만 최소한 "장치 사용 중" 문제를 우회할 수 있습니다.
장착 지점을 다른 위치로 이동합니다. 이렇게 하면 두 마운트 지점 사이에 더 이상 혼동이 없습니다.
mkdir /foo
mount --move /mnt/temp/dir /foo