읽기와 쓰기는 생각보다 대칭적이지 않다

Reading and writing are less symmetric than you (probably) think

컴퓨팅 I/O에서 읽기와 쓰기는 대칭적으로 보이지만, 버퍼링 때문에 동작이 크게 다르다. 읽기는 오류가 호출 전에 드러나지만, 쓰기는 버퍼에만 저장하고 성공을 반환해 오류가 지연된다. fwrite의 반환값만 확인하는 것으로는 실제 쓰기 성공을 보장할 수 없으며, fsync와 close까지 확인해야 데이터가 안전하게 저장된다. RAID 캐시와 메타데이터 동기화까지 고려해야 하는 복잡한 문제다.

fsync()를 호출해도 파일이 포함된 디렉터리 항목이 디스크에 도달했다고 보장되지 않는다. 이를 위해서는 디렉터리의 파일 디스크립터에 대해서도 명시적인 fsync()가 필요하다.

이 날의 다른 글

2026-10-31