Linux에서 FAT가 설치되었다는 이유만으로 FAT를 "더티"로 표시하는 이유는 무엇입니까?

Linux에서 FAT가 설치되었다는 이유만으로 FAT를 "더티"로 표시하는 이유는 무엇입니까?

USB 스틱(FAT 형식)을 Windows PC에 연결한 다음 "꺼내지" 않고 빼낸 다음 다시 연결하면 Windows에는 문제가 없으며 "문제가 있을 수 있습니다"에 대해 아무 것도 제공하지 않습니다. 경고하다.

그러나 Linux(예: Ubuntu 15.04)에서 동일한 작업을 수행하면 두 번째 삽입 후 로그에 다음과 같은 경고 메시지가 표시됩니다.

FAT-fs (sdf1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.

그런 다음 Windows PC에 넣으면 오류를 확인하라는 메시지가 나타납니다.

Linux가 FAT "더티" 플래그를 그렇게 쉽게 처리하는 이유는 무엇입니까? 실제로 "더러운" 것일 수 있는 경우 "더러운" 플래그를 설정하는 것이 더 나을 것이라고 생각했을 것입니다. 예를 들면 다음과 같습니다.

  • 파일에 쓸 때 "dirty" 플래그를 설정하십시오.
  • 다음과 같은 경우 "더티" 플래그가 지워집니다.
    • 기록된 모든 파일이 닫혔습니다. 및/또는
    • 쓰기 캐시는 디스크에 기록됩니다.
    • 물론 디스크가 마운트 해제된 경우입니다.

실제로 아무 것도 작성되지 않은 경우에도 사용자가 이동식 장치를 연결하거나 연결 해제할 때 "더티" 플래그 잘못된 경고를 받을 가능성을 줄이기 위해 해당 모드에서 실행할 수 있는 설치 옵션이 최소한 몇 가지 있으면 좋을 것입니다.

답변1

내 C는 거칠지만 다음과 같습니다.슈퍼블록을 읽을 때 Fat Dirty 비트를 설정합니다.(이것범죄왜 이런 식으로 구현되는지 설명합니다.)

Windows는 FS에서 무언가 변경될 때까지 이 비트를 설정하지 않도록 선택할 수 있지만 Linux는 마운트 시 이를 설정하는 데 좀 더 편집증적인 접근 방식을 취합니다.

나에게는 이 방법이 더 효율적인 것 같습니다. 마운트 후 더티를 가정하고 깨끗한 마운트 해제 시 설정을 해제합니다. 그렇지 않으면 커널이 볼륨의 더티/클린 상태를 추적하고 모든 쓰기 시 설정해야 하는지 확인해야 합니다.

코드와 커밋 주석에서 볼 수 있듯이 RO를 설치하면 비트가 변경되지 않습니다.

관련 정보