게으른 MNT_DETACH 또는`umount -l`이 안전하지 않은 이유는 무엇입니까?


10

umount -l안전하지 않은 몇 곳에서 읽었습니다 .

@cas의 답변 :

외부 드라이브를 안전하게 분리 할 수있는시기에 관심이있는 경우 umount--lazy옵션을 사용하지 마십시오

@frostschutz의 코멘트 :

umount --lazy안전하지 않으며 안전하게 만들 수 없습니다. [...]

util-linux Ruediger 등 마이어에 의해 코멘트 :

umount -l전혀 사용하지 마십시오 . 사용중인 모든 프로세스를 종료 /tmp/mountpoint하고 옵션없이 umount하십시오 -l.

umount -l안전하지 않은 / 위험한 이유는 무엇 입니까?

안전하게 만드는 방법이 있습니까?

답변:


12

게으른 마운트 해제는 슈뢰딩거의 고양이 마운트를 만듭니다

  • 장치가 실제로 마운트 해제되었는지 알 수 없습니다
  • "마운트 해제 된"파일 시스템 일부 상황에서 계속 액세스 할 수 있습니다
  • 어떤 경우 에는 "마운트 해제 된"파일 시스템 액세스 할 수 없습니다

보안에 대한 잘못된 인식이 :이 파일 시스템이 마운트 해제 된 것으로 보이지만, 현실에서 그것은 단지 파일 이름 공간 / 계층 구조에서 숨겨진되었습니다.

  • 프로세스는 여전히 열린 파일 디스크립터를 통해 쓸 수 있습니다
  • 상대 경로 이름을 통해 마운트 지점 내에 작업 디렉토리가있는 프로세스에서 새 파일 또는 기존 파일을 열 수 있습니다.

즉, umount -l /media/hdd더 이상 액세스 할 수없는 경우 /media/hdd/dir/file(절대 경로 이름) 작업 디렉토리가있는 프로세스가있는 경우 /media/hdd읽기 / 쓰기가 가능한 새 프로세스를 작성할 수 있습니다 ./dir/file(상대 경로 이름).

장치를 마운트 해제하려고하면 혼란스러운 메시지가 나타납니다.

# umount --force --all-targets /dev/sdb2
umount: /dev/sdb2: not mounted

이렇게하면 장치가 알 수없는 것처럼 보이지만 여전히 디스크에 쓰는 프로세스 가 있을 수 있습니다.

umount를 차단할 수있는 여러 가지 명백한 상황이 있으므로 파일 시스템이 lsof +f -- /dev/device아무 것도 표시 되지 않아도 마운트 해제되지 않을 수 있습니다 .

파일 시스템이 실제로 마운트 해제되는지 알 수 없습니다. 찾을 방법이 없습니다.

탈착식 장치

umount -l이동식 디스크를 사용하는 경우 림보 상태입니다. 보류중인 모든 데이터가 디스크에 기록되었는지 확인할 수 없습니다.

이후에 할 수있는 최선의 방법 umount -l모든 글쓰기가 완료되도록하고 향후 글쓰기를 막는 것 입니다.

이동식 장치를 사용하여 장치가 올바르게 마운트 해제되지 않으면 다음에 장치를 연결할 때 이상한 동작이 발생할 수 있습니다.

  • 장치는 증가 된 장치 이름을 얻습니다 . 즉가 /dev/sdb됩니다 /dev/sdc. 커널 로그 메시지는 /dev/sdb해당 장치가 더 이상 파일로 존재하지 않더라도 여전히 참조 할 수 있습니다 /dev. (이 문제를 해결하는 유일한 방법은 재부팅하는 것입니다.)

  • btrfs가 손상 될 수 있습니다. btrfs는 주어진 UUID를 가진 파일 시스템이 한 번에 하나만 존재할 것으로 예상합니다. 커널은 여전히 ​​팬텀 장치와 새 장치에서 사용 가능한 동일한 UUID를 확인합니다. (btrfs 백업 HDD를 다시 빌드해야했습니다).

systemd 잡았다


"상대 경로 이름을 통해 마운트 포인트 내에 작업 디렉토리가있는 프로세스에서 새 파일 또는 기존 파일을 열 수 있습니다." 이것은 내가 찾던 정보입니다. 추가 링크 나 참조가 있습니까?
Jonathon Reinhart

@Jonathon check man umount입니다. 그렇지 않으면 Google이 필요합니다. 이렇게하면 찾은 결과를 게시하십시오.
Tom Hale

umount(2)최근에 여러 번 읽었습니다 . 그것은 단지 말한다 바로, 새로운 접근을 사용할 수 없습니다 마운트 포인트 파일 시스템을 분리하고 모든 파일 시스템은 서로와 마운트 테이블에서 아래에 장착, 실제로 포인트를 마운트 할 때 마운트 해제가 바쁜 중단 수행 : "게으른 마운트 해제를 수행 " 그러나 불행히도 이것은 제공 한 것보다 세부 사항이 적습니다.
Jonathon Reinhart 2019 년

umount(8)" 파일 시스템에 파일 이 열려 있거나 일부 프로세스에 작업 디렉토리가 있거나 스왑 파일이 사용 중일 때" 파일 시스템이 사용 중이라고 말합니다. 그것은 확실한 목록처럼 들리지 않지만 아마도 내가 찾을 수있는 것만 큼 좋습니다.
Jonathon Reinhart 2019 년

나는 당신이 말한 것을 조금 자세히 설명 하고이 답변에 다른 예 추가했습니다 . 정보 주셔서 감사합니다!
Jonathon Reinhart 2018 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.