게으른 MNT_DETACH 또는`umount -l`이 안전하지 않은 이유는 무엇입니까? 관심이있는 경우 umount의 –lazy옵션을 사용하지 마십시오 @frostschutz의 코멘트

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

@cas의 답변 :

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

@frostschutz의 코멘트 :

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

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

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

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

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



답변

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

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

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

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

즉, 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 잡았다