Design and Implementation of a Log-Structured File System for Flash-Based Solid State Drives

Even in modern SSDs, the disparity between random and sequential write bandwidth is more than 10-fold. Moreover, random writes can shorten the limited lifespan of SSDs because they incur more NAND block erases per write. To overcome the problems of random writes, we propose a new file system, SFS, for SSDs. SFS is similar to the traditional log-structured file system (LFS) in that it transforms all random writes at the file system level to sequential ones at the SSD level, as a way to exploit the maximum write bandwidth of the SSD. But, unlike the traditional LFS, which performs hot/cold data separation on segment cleaning, SFS takes a new on writing data grouping strategy. When data blocks are to be written, SFS puts those with similar update likelihood into the same segment for sharper bimodal distribution of segment utilization, and thus aims at minimizing the inevitable segment cleaning overhead that occurs in any log-structured file system. We have implemented a prototype SFS by modifying Linux-based NILFS2 and compared it with three state-of-the-art file systems using several realistic workloads. Our experiments on SSDs show that SFS outperforms LFS by up to 2.5 times in terms of throughput. In comparison to modern file systems, SFS drastically reduces the block erase count inside SSDs by up to 23.3 times. Although SFS was targeted for SSDs, its data grouping on writing would also work well in HDDs. To confirm this, we repeated the same set of experiments over HDDs, and found that SFS is quite promising in HDDs: although the slow random reads in HDDs make SFS slightly less effective, SFS still outperforms LFS by 1.7 times.

[1]  David J. Lilja,et al.  High performance solid state storage under Linux , 2010, 2010 IEEE 26th Symposium on Mass Storage Systems and Technologies (MSST).

[2]  John Wilkes,et al.  UNIX Disk Access Patterns , 1993, USENIX Winter.

[3]  Kenneth Salem,et al.  Adaptive block rearrangement , 1993, TOCS.

[4]  Jeanna Neefe Matthews,et al.  Improving the performance of log-structured file systems with adaptive methods , 1997, SOSP.

[5]  Sang-Won Lee,et al.  A log buffer-based flash translation layer using fully-associative sector translation , 2007, TECS.

[6]  Jin-Soo Kim,et al.  Parameter-Aware I/O Management for Solid State Disks (SSDs) , 2012, IEEE Transactions on Computers.

[7]  Margo I. Seltzer,et al.  File System Performance and Transaction Support , 1992 .

[8]  David Woodhouse,et al.  JFFS : The Journalling Flash File System , 2001 .

[9]  Kevin Pagan,et al.  Inside Windows 95 , 1995 .

[10]  Mendel Rosenblum,et al.  The design and implementation of a log-structured file system , 1991, SOSP '91.

[11]  Cristian Ungureanu,et al.  Revisiting storage for smartphones , 2012, TOS.

[12]  J. Kára Ext4, btrfs, and the others , 2009 .

[13]  Sang Lyul Min,et al.  A space-efficient flash translation layer for CompactFlash systems , 2002, IEEE Trans. Consumer Electron..

[14]  Sang-Won Lee,et al.  Design of flash-based DBMS: an in-page logging approach , 2007, SIGMOD '07.

[15]  Rina Panigrahy,et al.  Design Tradeoffs for SSD Performance , 2008, USENIX ATC.

[16]  Philippe Bonnet,et al.  uFLIP: Understanding Flash IO Patterns , 2009, CIDR.

[17]  Ruei-Chuan Chang,et al.  Using data clustering to improve cleaning performance for flash memory , 1999 .

[18]  Yiming Hu,et al.  A Novel Reordering Write Buffer to Improve Write Performance of Log-Structured File Systems , 2003, IEEE Trans. Computers.

[19]  Margo I. Seltzer,et al.  Heuristic Cleaning Algorithms in Log-Structured File Systems , 1995, USENIX.

[20]  Hiroshi Motoda,et al.  A Flash-Memory Based File System , 1995, USENIX.

[21]  James Lau,et al.  File System Design for an NFS File Server Appliance , 1994, USENIX Winter.

[22]  Carl Staelin,et al.  An Implementation of a Log-Structured File System for UNIX , 1993, USENIX Winter.

[23]  Youngjae Kim,et al.  DFTL: a flash translation layer employing demand-based selective caching of page-level address mappings , 2009, ASPLOS.

[24]  Sara McMains,et al.  File System Logging versus Clustering: A Performance Comparison , 1995, USENIX.

[25]  Chris Ruemmler,et al.  Disk Shuffling , 1991 .

[26]  Ryan Johnson,et al.  Evaluating and repairing write performance on flash devices , 2009, DaMoN '09.

[27]  Scott D. Carson,et al.  A system for adaptive disk rearrangement , 1990, Softw. Pract. Exp..

[28]  Vagelis Hristidis,et al.  BORG: Block-reORGanization for Self-optimizing Storage Systems , 2009, FAST.

[29]  Steven Swanson,et al.  Rethinking Flash in the Data Center , 2010, IEEE Micro.

[30]  L. Vivier,et al.  The new ext 4 filesystem : current status and future plans , 2007 .

[31]  Xiao-Yu Hu,et al.  The Fundamental Limit of Flash Random Write Performance: Understanding, Analysis and Performance Modelling , 2010 .

[32]  J. A. Hartigan,et al.  A k-means clustering algorithm , 1979 .

[33]  Xiaodong Zhang,et al.  Understanding intrinsic characteristics and system implications of flash memory based solid state drives , 2009, SIGMETRICS '09.

[34]  Thomas E. Anderson,et al.  A Comparison of File System Workloads , 2000, USENIX Annual Technical Conference, General Track.

[35]  Yanping Zhao,et al.  HyLog: A High Performance Approach to Managing Disk Layout , 2004, FAST.

[36]  Young-Jin Kim,et al.  LAST: locality-aware sector translation for NAND flash memory-based storage systems , 2008, OPSR.

[37]  Luiz Andre Barroso Warehouse-scale Computing , 2010, SIGMOD 2010.