얼마 전, 언 스트 언 마운트 해제 후 빈 파일을 남길 가능성이있는 ext4에 대한 논의 가이 기사에서 잘 요약되어 있습니다. 기본적으로 할당 지연으로 인해 쓰기가 ext 저널의 기본 커밋 간격 (5 초)보다 훨씬 오래 쓰기 캐시에 보관 될 수 있습니다.
특정 상황에서 블록 할당을 강제하는 패치에서 문제가 해결 된 것으로 보이며, 기본적으로 최대 5 초 후에 데이터를 디스크에 저장합니다.
응용 프로그램이 파일 자체를 자르거나 추가하지 않고 파일의 기존 부분을 덮어 쓸 때 어떤 일이 발생하는지 궁금합니다. 5 초 안에 디스크에 강제로 저장됩니까?
파일에 추가하는 것과 다른 상황 인 것 같습니다. 추가 할 때 파일 크기가 변경됩니다. 이는 메타 데이터 변경입니다. 따라서 5 초 이내에 저널 커밋이 필요하며 data = ordered로 인해 보안 문제로 인해 데이터를 작성해야합니다 (그렇지 않으면 다른 사용자의 삭제 된 파일의 일부가 추가 된 소유자에게 표시 될 수 있음) 파일).
파일 데이터를 덮어 쓰는 경우 이전 데이터가 새 데이터와 동일한 사용자에 속하기 때문에 메타 데이터 저널 커밋 전에 데이터 쓰기가 발생해야하는 이유가 없습니다. 커밋 전에 쓰기가 발생합니까, 아니면 저널 커밋 간격보다 오래 지연 될 수 있습니까? 그렇다면 얼마나 걸립니까?
업데이트 : 올바른 일을 할 때, 즉 fsync ()를 사용하면이 모든 것이 관련이 없다는 것을 알고 있습니다. (이것은 ext4 및 데이터 손실에 대한 모든 토론의 주된 이유였습니다. 문제는 fsync ()가 아닌 응용 프로그램에만 해당되거나 적절한 순간에 관련되지 않았습니다.) 내 자신의 응용 프로그램을 작성하지 않고 있습니다. 모든 응용 프로그램이 올바르게 작동하는지 여부를 알지 못하며 이러한 "위험한"쓰기에 대한 대략적인 시간을 알고 싶습니다. 질문하는 이유는 내 그래픽 드라이버가 정기적으로 커널 패닉을 유발하기 때문에 지난 5 초 이상의 데이터 쓰기에 대해 걱정해야하는지 알고 싶습니다.