For the atomicity and persistence of data in a file system, including user applications, it is important to ensure the order in which data is written. For this purpose, fsync() system calls are used, but their operational performance overhead is considerable. In addition, the F2FS file system may not guarantee data consistency if the permanent storage order between blocks of data and node blocks is not guaranteed when performing fsync() system calls. To solve this problem, strict mode is applied to Fsync mode, one of the F2FS file system mount options, but it is inevitable to reduce performance further than posix mode. This paper presents a technique to ensure crash consistency of the F2FS file system by using order preserving input/ output stack. In addition, the carry barrier flag used in the order preserving input/output stack ensures crash consistency of the F2FS file system without any additional performance degradation compared to the F2FS posix mode.
유저 어플리케이션을 비롯하여 파일시스템에서 데이터의 원자성, 영속성을 위해 쓰기 데이터들 간의 순서 보장이 중요하다. 이를 위해 fsync() 시스템 콜이 사용되는데 그 동작상 성능 오버헤드가 상당히 크다. 거기에 더해서 F2FS 파일시스템은 fsync() 시스템 콜을 수행할 때 데이터 블록과 노드 블록 간의 영구 저장 순서가 보장되지 않는 경우 데이터 일관성이 보장되지 않을 가능성이 존재하였다. 이를 해결하기 위해 F2FS 파일시스템은 마운트 옵션 중 하나인 fsync 모드에 strict 모드를 추가하였으나 posix 모드와 대비하여 추가적인 성능 저하가 불가피하게 발생한다. 본 논문은 순서보장형 입출력 스택을 이용하여 F2FS 파일스템의 크래시 일관성을 보장하는 기법을 제안한다. 또한 순서보장형 입출력 스택에서 사용하는 캐리 베리어 플래그를 통해 크래시 일관성을 보장하면서도 F2FS posix 모드와 대비하여 추가적인 성능 저하가 발생하지 않음을 보인다.