skip to main content
research-article
Public Access

Application Crash Consistency and Performance with CCFS

Published:28 September 2017Publication History
Skip Abstract Section

Abstract

Recent research has shown that applications often incorrectly implement crash consistency. We present the Crash-Consistent File System (ccfs), a file system that improves the correctness of application-level crash consistency protocols while maintaining high performance. A key idea in ccfs is the abstraction of a stream. Within a stream, updates are committed in program order, improving correctness; across streams, there are no ordering restrictions, enabling scheduling flexibility and high performance. We empirically demonstrate that applications running atop ccfs achieve high levels of crash consistency. Further, we show that ccfs performance under standard file-system benchmarks is excellent, in the worst case on par with the highest performing modes of Linux ext4, and in some cases notably better. Overall, we demonstrate that both application correctness and high performance can be realized in a modern file system.

References

  1. Ramnatthan Alagappan, Aishwarya Ganesan, Yuvraj Patel, Thanumalayan Sankaranarayana Pillai, Andrea C. Arpaci-Dusseau, and Remzi H. Arpaci-Dusseau. 2016. Correlated crash vulnerabilities. In Proceedings of the 12th Symposium on Operating Systems Design and Implementation (OSDI’16).Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau. 2014. Operating Systems: Three Easy Pieces (0.9 ed.). Arpaci-Dusseau Books.Google ScholarGoogle Scholar
  3. Andrew D. Birrell. 1989. An Introduction to Programming with Threads. Technical Report SRC-RR-35.Google ScholarGoogle Scholar
  4. James Bornholt, Antoine Kaufmann, Jialin Li, Arvind Krishnamurthy, Emina Torlak, and Xi Wang. 2016. Specifying and checking file system crash-consistency models. In Proceedings of the 21st International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS’16). Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Nathan C. Burnett. 2006. Information and Control in File System Buffer Management. Ph.D. Dissertation. University of Wisconsin-Madison.Google ScholarGoogle Scholar
  6. Vijay Chidambaram, Thanumalayan Sankaranarayana Pillai, Andrea C. Arpaci-Dusseau, and Remzi H. Arpaci-Dusseau. 2013. Optimistic crash consistency. In Proceedings of the 24th ACM Symposium on Operating Systems Principles (SOSP’13). Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Vijay Chidambaram, Tushar Sharma, Andrea C. Arpaci-Dusseau, and Remzi H. Arpaci-Dusseau. 2012. Consistency without ordering. In Proceedings of the 10th USENIX Symposium on File and Storage Technologies (FAST’12). 101--116.Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Sailesh Chutani, Owen T. Anderson, Michael L. Kazar, Bruce W. Leverett, W. Anthony Mason, and Robert N. Sidebotham. 1992. The episode file system. In Proceedings of the USENIX Winter Technical Conference (USENIX Winter’92). 43--60.Google ScholarGoogle Scholar
  9. Jeremy Condit, Edmund B. Nightingale, Christopher Frost, Engin Ipek, Benjamin Lee, Doug Burger, and Derrick Coetzee. 2009. Better I/O through byte-addressable, persistent memory. In Proceedings of the 22nd ACM Symposium on Operating Systems Principles (SOSP’09).Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Jonathan Corbet. 2009. Better than POSIX? March 2009. Retrieved April 2016 from https://lwn.net/Articles/323752/.Google ScholarGoogle Scholar
  11. Christian Czezatke and M. Anton Ertl. 2000. LinLogFS: A log-structured filesystem for linux. In Proceedings of the USENIX Annual Technical Conference (FREENIX Track’00).Google ScholarGoogle Scholar
  12. Linux Documentation. 2016. XFS Delayed Logging Design. Retrieved April 2016 from https://www.kernel.org/doc/Documentation/filesystems/xfs-delayed-logging-design.txt.Google ScholarGoogle Scholar
  13. Filebench. 2016. Filebench. Retrieved March 2016 from https://github.com/filebench/filebench/wiki.Google ScholarGoogle Scholar
  14. Christopher Frost, Mike Mammarella, Eddie Kohler, Andrew de los Reyes, Shant Hovsepian, Andrew Matsuoka, and Lei Zhang. 2007. Generalized file system dependencies. In Proceedings of the 21st ACM Symposium on Operating Systems Principles (SOSP’07). 307--320. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Gregory R. Ganger, Marshall Kirk McKusick, Craig A. N. Soules, and Yale N. Patt. 2000. Soft updates: A solution to the metadata update problem in file systems. ACM Trans. Comput. Syst. (TOCS) 18, 2 (May 2000), 127–153. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Gregory R. Ganger and Yale N. Patt. 1994. Metadata update performance in file systems. In Proceedings of the 1st Symposium on Operating Systems Design and Implementation (OSDI’94). 49--60.Google ScholarGoogle Scholar
  17. Kourosh Gharachorloo, Daniel Lenoski, James Laudon, Phillip Gibbons, Anoop Gupta, and John Hennessy. 1992. Memory consistency and event ordering in scalable shared-memory multiprocessors. In Proceedings of the 17th Annual International Symposium on Computer Architecture (ISCA’90). Seattle, WA.Google ScholarGoogle Scholar
  18. Jim Gray and Andreas Reuter. 1993. Transaction Processing: Concepts and Techniques. Morgan Kaufmann.Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Robert Hagmann. 1987. Reimplementing the cedar file system using logging and group commit. In Proceedings of the 11th ACM Symposium on Operating Systems Principles (SOSP’87). Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. Timothy L. Harris. 2001. A Pragmatic Implementation of Non-blocking Linked-lists. DISC. Google ScholarGoogle ScholarCross RefCross Ref
  21. Tyler Harter, Chris Dragga, Michael Vaughn, Andrea C. Arpaci-Dusseau, and Remzi H. Arpaci-Dusseau. 2011. A file is not a file: Understanding the I/O behavior of apple desktop applications. In Proceedings of the 23rd ACM Symposium on Operating Systems Principles (SOSP’11).Google ScholarGoogle Scholar
  22. Maurice Herlihy. 1991. Wait-free synchronization. Transactions on Programming Languages 11, 1 (January 1991). Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. D. M. Jacobson and J. Wilkes. 1991. Disk Scheduling Algorithms Based on Rotational Position. Technical Report HPL-CSP-91-7. Hewlett Packard Laboratories.Google ScholarGoogle Scholar
  24. Jaeho Kim, Jongmoo Choi, Yongseok Oh, Donghee Lee, Eunsam Kim, and Sam H. Noh. 2009. Disk schedulers for solid state drives. In EMSOFT. Grenoble, France.Google ScholarGoogle Scholar
  25. Lanyue Lu, Andrea C. Arpaci-Dusseau, Remzi H. Arpaci-Dusseau, and Shan Lu. 2013. A study of linux file system evolution. In Proceedings of the 11th USENIX Symposium on File and Storage Technologies (FAST’13). San Jose, CA.Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. Lanyue Lu, Thanumalayan Sankaranarayana Pillai, Andrea C. Arpaci-Dusseau, and Remzi H. Arpaci-Dusseau. 2016. WiscKey: Separating keys from values in SSD-conscious storage. In Proceedings of the 14th USENIX Conference on File and Storage Technologies (FAST’16).Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. Lanyue Lu, Yupu Zhang, Thanh Do, Samer Al-Kiswany, Andrea C. Arpaci-Dusseau, and Remzi H. Arpaci-Dusseau. 2014. Physical disentanglement in a container-based file system. In Proceedings of the 11th Symposium on Operating Systems Design and Implementation (OSDI’14).Google ScholarGoogle Scholar
  28. MariaDB. 2016. Fusion-io NVMFS Atomic Write Support. Retrieved April 2016 from https://mariadb.com/kb/en/mariadb/fusion-io-nvmfs-atomic-write-support/.Google ScholarGoogle Scholar
  29. Mercurial. 2016. Dealing with Repository and Dirstate Corruption. Retrieved April 2016 from https://www.mercurial-scm.org/wiki/RepositoryCorruption.Google ScholarGoogle Scholar
  30. Microsoft. 2016. Alternatives to using Transactional NTFS. Retrieved April 2016 from https://msdn.microsoft.com/en-us/library/hh802690.aspx.Google ScholarGoogle Scholar
  31. Changwoo Min, Woon-Hak Kang, Taesoo Kim, Sang-Won Lee, and Young Ik Eom. 2015. Lightweight application-level crash consistency on transactional flash storage. In Proceedings of the USENIX Annual Technical Conference (USENIX ATC’15).Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. C. Mohan, D. Haderle, B. Lindsay, H. Pirahesh, and P. Schwarz. 1992. ARIES: A transaction recovery method supporting fine-granularity locking and partial rollbacks using write-ahead logging. ACM Trans. Data. Syst. 17, 1 (March 1992), 94--162. Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. Edmund B. Nightingale, Kaushik Veeraraghavan, Peter M. Chen, and Jason Flinn. 2006. Rethink the sync. In Proceedings of the 7th Symposium on Operating Systems Design and Implementation (OSDI’06).Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. Patrick O’Neil, Edward Cheng, Dieter Gawlick, and Elizabeth O’Neil. 1996. The log-structured merge-tree (LSM-tree). Acta Informat. 33, 4 (1996), 351--385.Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. Stan Park, Terence Kelly, and Kai Shen. 2013. Failure-atomic msync (): A simple and efficient mechanism for preserving the integrity of durable data. In Proceedings of the EuroSys Conference (EuroSys’13).Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. Steven Pelley, Peter M. Chen, and Thomas F. Wenisch. 2014. Memory persistency. In Proceedings of the 41st International Symposium on Computer Architecture (ISCA’14). Google ScholarGoogle ScholarCross RefCross Ref
  37. Thanumalayan Sankaranarayana Pillai, Ramnatthan Alagappan, Lanyue Lu, Vijay Chidambaram, Andrea C. Arpaci-Dusseau, and Remzi H. Arpaci-Dusseau. 2017. Application crash consistency and performance with CCFS. In Proceedings of the 15th USENIX Conference on File and Storage Technologies (FAST’17). Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. Thanumalayan Sankaranarayana Pillai, Vijay Chidambaram, Ramnatthan Alagappan, Samer Al-Kiswany, Andrea C. Arpaci-Dusseau, and Remzi H. Arpaci-Dusseau. 2014. All file systems are not created equal: On the complexity of crafting crash-consistent applications. In Proceedings of the 11th Symposium on Operating Systems Design and Implementation (OSDI’14).Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. Thanumalayan Sankaranarayana Pillai, Vijay Chidambaram, Ramnatthan Alagappan, Samer Al-Kiswany, Andrea C. Arpaci-Dusseau, and Remzi H. Arpaci-Dusseau. 2015. Crash consistency. Commun. ACM 58, 10 (October 2015). Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. Donald E. Porter, Owen S. Hofmann, Christopher J. Rossbach, Alexander Benn, and Emmett Witchel. 2008. Operating systems transactions. In Proceedings of the 8th Symposium on Operating Systems Design and Implementation (OSDI’08).Google ScholarGoogle Scholar
  41. Vijayan Prabhakaran, Andrea C. Arpaci-Dusseau, and Remzi H. Arpaci-Dusseau. 2005. Analysis and evolution of journaling file systems. In Proceedings of the USENIX Annual Technical Conference (USENIX’05). 105--120.Google ScholarGoogle ScholarDigital LibraryDigital Library
  42. Vijayan Prabhakaran, Thomas L. Rodeheffer, and Lidong Zhou. 2008. Transactional flash. In Proceedings of the 8th Symposium on Operating Systems Design and Implementation (OSDI’08).Google ScholarGoogle Scholar
  43. Benjamin Recht, Christopher Re, Stephen Wright, and Feng Niu. 2011. Hogwild: A Lock-free Approach to Parallelizing Stochastic Gradient Descent. Advances in Neural Information Processing (2011), 693–701.Google ScholarGoogle Scholar
  44. Mendel Rosenblum and John Ousterhout. 1992. The design and implementation of a log-structured file system. ACM Trans. Comput. Syst. 10, 1 (February 1992), 26--52. Google ScholarGoogle ScholarDigital LibraryDigital Library
  45. Chris Ruemmler and John Wilkes. 1994. An introduction to disk drive modeling. IEEE Comput. 27, 3 (March 1994), 17--28. Google ScholarGoogle ScholarDigital LibraryDigital Library
  46. Margo Seltzer, Keith Bostic, Marshall Kirk McKusick, and Carl Staelin. 1993. An implementation of a log-structured file system for UNIX. In Proceedings of the USENIX Winter Technical Conference (USENIX Winter’93). 307--326.Google ScholarGoogle Scholar
  47. Margo Seltzer, Peter Chen, and John Ousterhout. 1990. Disk scheduling revisited. In Proceedings of the USENIX Winter Technical Conference (USENIX Winter’90). 313--324.Google ScholarGoogle Scholar
  48. Margo I. Seltzer. 1993. File System Performance and Transaction Support. Ph.D. Dissertation. EECS Department, University of California, Berkeley.Google ScholarGoogle Scholar
  49. Margo I. Seltzer, Gregory R. Ganger, M. Kirk McKusick, Keith A. Smith, Craig A. N. Soules, and Christopher A. Stein. 2000. Journaling versus soft updates: Asynchronous meta-data protection in file systems. In Proceedings of the USENIX Annual Technical Conference (USENIX’00). 71--84.Google ScholarGoogle Scholar
  50. Ji-Yong Shin, Mahesh Balakrishnan, Tudor Marian, and Hakim Weatherspoon. 2016. Isotope: Transactional isolation for block storage. In Proceedings of the 14th USENIX Conference on File and Storage Technologies (FAST’16).Google ScholarGoogle ScholarDigital LibraryDigital Library
  51. Daniel J. Sorin, Mark D. Hill, and David A. Wood. 2011. A Primer on Memory Consistency and Cache Coherence. Synthesis Lectures on Computer Architecture, 1st Morgan & Claypool (November 2011).Google ScholarGoogle Scholar
  52. Richard P. Spillane, Sachin Gaikwad, Manjunath Chinni, Erez Zadok, and Charles P. Wright. 2009. Enabling transactional file access via lightweight kernel extensions. In Proceedings of the 7th USENIX Symposium on File and Storage Technologies (FAST’09).Google ScholarGoogle Scholar
  53. SQLite. 2016. Isolation In SQLite. Retrieved Dec 2016 from https://www.sqlite.org/isolation.html.Google ScholarGoogle Scholar
  54. SQLite. 2016. SQL As Understood By SQLite. Retrieved Dec 2016 from https://www.sqlite.org/lang.html.Google ScholarGoogle Scholar
  55. Vasily Tarasov, Erez Zadok, and Spencer Shepler. 2016. Filebench: A flexible framework for file system benchmarking. ;login: USENIX Mag. 41, 1 (June 2016).Google ScholarGoogle Scholar
  56. Linus Torvalds. 2009. Linux 2.6.29. Retrieved April 2016 from https://lkml.org/lkml/2009/3/25/632.Google ScholarGoogle Scholar
  57. Theodore Ts’o. 2012. ext4: remove calls to ext4_jbd2_file_inode() from delalloc write path. Retrieved April 2016 from http://lists.openwall.net/linux-ext4/2012/11/16/9.Google ScholarGoogle Scholar
  58. Rajat Verma, Anton Ajay Mendez, Stan Park, Sandya Srivilliputtur Mannarswamy, Terence P. Kelly, and Charles B. Morrey III. 2015. Failure-atomic updates of application data in a linux file system. In Proceedings of the 13th USENIX Conference on File and Storage Technologies (FAST’15).Google ScholarGoogle ScholarDigital LibraryDigital Library
  59. Charles P. Wright, Richard Spillane, Gopalan Sivathanu, and Erez Zadok. 2007. Extending ACID semantics to the file system via ptrace. ACM Trans. Storage (TOS) 3, 2 (June 2007), 1--42. Google ScholarGoogle ScholarDigital LibraryDigital Library
  60. Junfeng Yang, Can Sar, and Dawson Engler. 2006. EXPLODE: A lightweight, general system for finding serious storage system errors. In Proceedings of the 7th Symposium on Operating Systems Design and Implementation (OSDI’06).Google ScholarGoogle ScholarDigital LibraryDigital Library
  61. Mai Zheng, Joseph Tucek, Dachuan Huang, Feng Qin, Mark Lillibridge, Elizabeth S. Yang, Bill W. Zhao, and Shashank Singh. 2014. Torturing databases for fun and profit. In Proceedings of the 11th Symposium on Operating Systems Design and Implementation (OSDI’14).Google ScholarGoogle Scholar

Index Terms

  1. Application Crash Consistency and Performance with CCFS

          Recommendations

          Comments

          Login options

          Check if you have access through your login credentials or your institution to get full access on this article.

          Sign in

          Full Access

          • Published in

            cover image ACM Transactions on Storage
            ACM Transactions on Storage  Volume 13, Issue 3
            Special Issue on FAST 2017 and Regular Papers
            August 2017
            265 pages
            ISSN:1553-3077
            EISSN:1553-3093
            DOI:10.1145/3141876
            • Editor:
            • Sam H. Noh
            Issue’s Table of Contents

            Copyright © 2017 ACM

            Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than the author(s) must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected].

            Publisher

            Association for Computing Machinery

            New York, NY, United States

            Publication History

            • Published: 28 September 2017
            • Revised: 1 June 2017
            • Received: 1 June 2017
            • Accepted: 1 June 2017
            Published in tos Volume 13, Issue 3

            Permissions

            Request permissions about this article.

            Request Permissions

            Check for updates

            Qualifiers

            • research-article
            • Research
            • Refereed

          PDF Format

          View or Download as a PDF file.

          PDF

          eReader

          View online with eReader.

          eReader