이전의 chroot 파일 시스템을 마운트 해제하는 방법


17

데비안 서버의 일부 문제를 다음과 같이 수정하기 위해 라이브 라이브 시스템 (live-cd와 유사)을 사용하고 있습니다.

# mkdir -p /mnt/rescue
# mount /dev/md2 /mnt/rescue
# mount --bind /dev /mnt/rescue/dev/
# mount --bind /proc /mnt/rescue/proc/
# mount --bind /sys /mnt/rescue/sys/

이제 chroot를 할 수 있습니다 /mnt/rescue-완료 후 파일 시스템을 다시 마운트 해제하는 방법은 무엇입니까?

umount: /mnt/rescue: target is busy.
    (In some cases useful info about processes that use
     the device is found by lsof(8) or fuser(1))

나는 그것이 있기 때문에 추측 dev, proc그리고 sys(가) 파일 시스템을 마운트에 바인딩됩니다. 그러나 그것들을 마운트 해제 할 수는 없습니다 ...


마운트를 해제하려고하면 어떻게됩니까 /mnt/rescue/proc? 아직 프로세스를 실행하고 chroot있지 않습니까?
Mat

시도 lsof /mnt/rescue프로세스가 해당 폴더를 사용하고있는 것을 볼 수 있습니다.
Martín Canaval

종료하기 전에 chroot 된 쉘을 그대로 두어야합니다.
vonbrand

답변:


14
  1. 먼저 chroot 세션을 종료 exit해야합니다. 일반적으로 간단한 작업입니다.

    exit
    
  2. 그런 다음 바인드 된 모든 디렉토리를 마운트 해제하십시오.

    umount /mnt/rescue/dev/
    umount /mnt/rescue/proc/
    umount /mnt/rescue/sys/
    
  3. 그때:

    umount /mnt/rescue
    

sync여기에서 사용되지 않는 것이 걱정되는 경우 마운트 해제 가능 여부에 영향을 미치지 않습니다. 마운트 해제는 어쨌든 보류중인 쓰기를 플러시합니다 (마운트 해제 후 갈 수있는 위치가 없기 때문에 필요합니다). chroot 된 프로세스의 존재는 관련이 없습니다 (마운트 해제를 방지한다는 점을 제외하고). 정상적인 시스템 작동에서 동기화는 관찰 가능한 효과가 없습니다. 동기화는 장치를 마운트 해제하지 않고 물리적으로 연결을 끊거나 장치를 마운트하는 동안 시스템이 충돌하는 경우에만 차이를 만듭니다.


1
고마워, 그게 다야 ... 내 실수는 / mnt / rescue / sys / 대신 / sys /를 마운트 해제하려고했습니다 ...
Afr

2
sync완전히 쓸모가 없다.
Gilles 'SO- 악마 그만해'

@Gilles sync쓸모없는 이유를 좀 더 자세히 설명해 주실 수 있습니까 ? 현재 커널에서 쓸모 없습니까? 아니면이 경우에만 (구조 모드)? chroot를 종료 한 후 umount를 방지하는 디스크에 보류중인 대용량 쓰기가있는 경우를 대비하여 넣었습니다.
John Siu

4
@JohnSiu sync는 마운트 해제 가능 여부에 영향을 미치지 않습니다. 마운트 해제는 어쨌든 보류중인 쓰기를 플러시합니다 (마운트 해제 후 갈 수있는 위치가 없기 때문에 필요합니다). chroot 된 프로세스의 존재는 관련이 없습니다 (마운트 해제를 방지한다는 점을 제외하고). 정상적인 시스템 작동에서는 sync관찰 가능한 효과가 없습니다. sync장치를 마운트 해제하지 않고 물리적으로 연결을 끊었거나 장치를 마운트하는 동안 시스템이 충돌하는 경우에만 차이가 있습니다.
Gilles 'SO- 악마 그만해'

@Gilles 지금 당신의 요점을 이해합니다. 감사합니다!!
John Siu

14

아래 명령을 실행하여 파일 시스템 계층에서 파일 시스템을 강제로 분리하고 더 이상 사용하지 않는 즉시 파일 시스템에 대한 모든 참조를 정리하십시오.

umount -lf /mnt/rescue

4

'타겟이 바쁘다'는 이유. 마운트 포인트 (때문에 메시지는 /mnt/rescue) 파일 브라우저 또는 터미널 세션에서 열려, 또한 마운트 해제 과정의 순서 (여기가 평균 I dev/pts전에 umounted한다 dev/)

글쎄, 성공적으로 모든 fs를 마운트 해제하려면 :

  • 파일 브라우저에서 마운트 지점이 열려 있지 않은지 확인하십시오!
  • chroot를 종료 한 후 chroot dir ( cd)에서 디렉토리를 변경하십시오 !
  • 주문 dev/pts => dev/ => proc/ => sys/과 관련 하여 umount fs :

    sudo umount / mnt / rescue / dev / pts
    sudo umount / mnt / rescue / dev
    sudo umount / mnt / rescue / proc
    sudo umount / mnt / rescue / sys
    sudo umount / mnt / rescue


2

이것이 schrootUbuntu 버전 10.04에서 명령으로 수행하는 방법입니다 .

# list all sessions:
schroot --list --all-sessions
# if the above command does not work, just type `mount`. The bind mount
# points with something like this in the mount path is the session name you want to get:
precise-a4aac8e0-663c-4fec-8fb2-16e4b06557e3 (<chroot_name>-<id>)

# now run this to properly end the session:
schroot -e -c precise-ca6c72e4-0e9f-4721-8a0e-cca359e2c2fd

0

chroot를 종료하십시오. 호스트 시스템에서 'mount'명령은 마운트 된 모든 경로를 표시합니다. chroot에 마운트 된 경로를 포함합니다. 예를 들면 다음과 같습니다.

binfmt_misc on /home/user/projects/jsroot/proc/sys/fs/binfmt_misc

그런 다음 chroot 환경을 입력하십시오. chroot 환경에서 unmount를 실행하여 모든 경로를 순서대로 마운트 해제하십시오. (하위 경로는 상위 경로보다 먼저 마운트 해제해야합니다.)

unmount /proc/sys/fs/binfmt_misc
unmount /proc/sys
unmount /proc
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.