사용자 버퍼 복사
커널은 데이터를 페이지 캐시에 복사하고 dirty 표시를 남긴 뒤 곧바로 성공을 반환할 수 있다.
파일 시스템 실무에서는 fd, page cache, writeback, fsync(), 저장장치 캐시의 경계를 구분해야 데이터 유실을 줄일 수 있다.
커널은 데이터를 페이지 캐시에 복사하고 dirty 표시를 남긴 뒤 곧바로 성공을 반환할 수 있다.
커널 플러셔가 dirty page를 디스크 요청으로 내보내며, 이 시점은 애플리케이션 반환 시점과 다르다.
fsync(fd)는 파일 데이터와 필요한 메타데이터가 안정 저장소까지 가도록 기다린다.
임시 파일을 rename()으로 교체했다면 새 이름 자체를 보장하려고 디렉토리 fd도 fsync해야 한다.
각 write()가 동기화 비용을 치르므로 단순하지만 작은 쓰기를 많이 하는 워크로드에서는 지연이 커진다.
페이지 캐시를 우회해 DB처럼 자체 캐시를 가진 프로그램이 중복 캐싱을 줄일 때 사용한다.
unlink 후에도 프로세스가 fd를 잡고 있으면 inode와 데이터 블록은 close될 때까지 공간을 차지한다.