Abstract
The append-only write scheme of the log-structured file system (LFS), which does not permit in- place updates, is suitable for flash memory. Therefore, LFSs have been adopted to manage various flash-memory-based storage systems. However, LFSs amplify user write requests owing to segment cleaning and frequent metadata write operations. Hence, the IO performance is degraded and the life span of the flash memory is reduced. In particular, when each segment cleaning invokes checkpointing to store dirty metadata modified via block relocation, irrelevant dirty metadata are written by the checkpointing operation, and the metadata write overhead occupies a significant proportion of the segment cleaning latency. Hence, we propose segment cleaning journaling (SCJ), which logs the block relocation information of segment cleaning at a specific journal area without invoking checkpointing. We implemented and evaluated the proposed SCJ by modifying F2FS. Experimental results show that SCJ can improve file system performance by 1.13–1.63 times compared with normal segment cleaning.
Highlights
NAND flash memory has been widely used in various systems, including mobile devices and server systems
We propose segment cleaning journaling (SCJ), which enables segment cleaning to be performed without checkpointing, i.e., metadata changes that are relevant to segment cleaning are logged at specific journal blocks
F2FS performs checkpointing in the metadata write phase. This results in unnecessary writes because checkpointing flushes all dirty metadata blocks that are unrelated to segment cleaning
Summary
NAND flash memory has been widely used in various systems, including mobile devices and server systems. Many metadata updates are performed by block relocations during segment cleaning, the LMU scheme does not change the in-storage file system metadata immediately. F2FS performs checkpointing after each segment cleaning to flush the modified metadata. Checkpointing flushes all the modified data and metadata blocks, including those irrelevant to the segment cleaning operation. In SCJ, checkpointing is delayed until excessive metadata updates are pending and the checkpointing interval increases significantly This causes many pre-invalid blocks that are invalid but still referenced by in-storage metadata and are non-reclaimable. The preinvalid blocks can be transformed to invalid blocks after their corresponding metadata are flushed by checkpointing To solve this problem, we propose an adaptive checkpointing technique that performs checkpointing by considering accumulated pre-invalid blocks. When the performance degradation caused by the pre-invalid blocks is more significant than the metadata flush overhead of a checkpoint, checkpointing is invoked.
Talk to us
Join us for a 30 min session where you can share your feedback and ask us any queries you have