Mitigating Journaling Overhead via Atomic Write

Many file systems make use of the journaling mechanism for maintaining crash consistency. However, journaling incurs double writes, which degrades performance and storage lifetime, becoming a serious concern especially on the endurance-limited NAND flash memory based storage. In this paper, we propose a new consistency maintenance mechanism that exploits the atomic write operation supported by modern storage such as NVMe SSD and transactional flash. In specific, we design two components, 1) an atomic handler that tracks multiple blocks required to be written atomically at the file system level and 2) an atomic controller that issues an I/O command in a transactional manner at the driver level. Real implementation based experiments show that our proposal guarantees crash consistency even under sudden failures with at most 5% performance overhead.

[1]  Sang-Won Lee,et al.  Lightweight Application-Level Crash Consistency on Transactional Flash Storage , 2015, USENIX Annual Technical Conference.

[2]  Dhabaleswar K. Panda,et al.  Beyond block I/O: Rethinking traditional storage primitives , 2011, 2011 IEEE 17th International Symposium on High Performance Computer Architecture.

[3]  Remzi H. Arpaci-Dusseau Operating Systems: Three Easy Pieces , 2015, login Usenix Mag..

[4]  Andrea C. Arpaci-Dusseau,et al.  Application Crash Consistency and Performance with CCFS , 2017, USENIX Annual Technical Conference.

[5]  Tsuyoshi Murata,et al.  {m , 1934, ACML.

[6]  Dongkun Shin,et al.  iJournaling: Fine-Grained Journaling for Improving the Latency of Fsync System Call , 2017, USENIX Annual Technical Conference.

[7]  G. G. Stokes "J." , 1890, The New Yale Book of Quotations.