Abstract
With the availability of hybrid DRAM and NVRAM memory on the memory bus of CPUs, a number of file systems on NVRAM have been designed and implemented. In this paper we present the design and implementation of a file system on NVRAM called DurableFS, which provides atomicity and durability of file operations to applications. It provides ACID properties to transactions involving multiple files. Due to the byte level random accessibility of memory, it is possible to provide these guarantees without much overhead. We use standard techniques like copy on write for data, and a redo log for metadata changes to build an efficient file system which provides durability and atomicity guarantees to transactions. Benchmarks on the implementation shows that there is only a 7% degradation in performance due to providing these guarantees.
Similar content being viewed by others
References
Condit J, Nightingale EB, Frost C, Ipek E, Lee B, Burger D, Coetzee D (2009) Better I/O through byte-addressable, persistent memory. In: Proceedings of the ACM SIGOPS 22nd symposium on Operating systems principles. ACM, pp 133–146
Dong M, Chen H (2017) Soft updates made simple and fast on non-volatile memory. In: 2017 USENIX annual technical conference (USENIX ATC 17). USENIX Association, Santa Clara, CA, pp 719–731
Xia F, Jiang D, Xiong J, Sun N (2017) HiKV: a hybrid index key-value store for DRAM-NVM memory systems. In: 2017 USENIX annual technical conference (USENIXATC 17), pp 349–362
Xu J, Swanson S (2016) NOVA: a log-structured file system for hybrid volatile/non-volatile main memories. In: FAST, pp 323–338
Dulloor SR, Kumar S, Keshavamurthy A, Lantz P, Reddy D, Sankaran R, Jackson J (2014) System software for persistent memory. In: Proceedings of the ninth European conference on computer systems. ACM, p 15
Sehgal P, Basu S, Srinivasan K, Voruganti K (2015) An empirical study of file systems on nvm. In: 2015 31st symposium on mass storage systems and technologies (MSST). IEEE, pp 1–14
Chang F, Dean J, Ghemawat S, Hsieh WC, Wallach DA, Burrows M et al (2008) Bigtable: a distributed storage system for structured data. ACM Trans Comput Syst (TOCS) 26(2):4
Mendelsohn A (2013) The oracle story: 1984–2001. IEEE Ann Hist Comput 35(2):10–23
Zhao J, Li S, Yoon DH, Xie Y, Jouppi NP (2013) Kiln: closing the performance gap between systems with and without persistence support. In: 2013 46th annual IEEE/ACM international symposium on microarchitecture (MICRO). IEEE, pp 421–432
Rudoff AM (2016) Deprecating the PCOMMIT instruction. https://software.intel.com/en-us/blogs/2016/09/12/deprecate-pcommit-instruction. Accessed 2 Jan 2018
Persistent memory programming. http://pmem.io/documents/NVDIMM_DriverWritersGuide-July-2016.pdf. Accessed 2 Jan 2018
Bhandari K, Chakrabarti DR, Boehm HJ (2012) Implications of CPU caching on byte-addressable non-volatile memory programming. Hewlett-Packard, Technical report HPL-2012-236
Intel corporation: Intel ® architecture instruction set extensions programming reference (2015). https://software.intel.com/sites/default/files/managed/07/b7/319433-023.pdf
Direct Access for files (n.d.) https://www.kernel.org/doc/Documentation/filesystems/dax.txt. Accessed 1 Dec 2017
Xu J, Zhang L, Memaripour A, Gangadharaiah A, Borase A, Da Silva TB, Rudoff A (2017) NOVA-fortis: a fault-tolerant non-volatile main memory file system. In: Proceedings of the 26th symposium on operating systems principles. ACM, pp 478–496
Caulfield AM, De A, Coburn J, Mollow TI, Gupta RK, Swanson S (2010) Moneta: a high-performance storage array architecture for next-generation, non-volatile memories. In: Proceedings of the 2010 43rd annual IEEE/ACM international symposium on microarchitecture. IEEE Computer Society, pp 385–395
Volos H, Nalli S, Panneerselvam S, Varadarajan V, Saxena P, Swift MM (2014) Aerie: flexible file-system interfaces to storage-class memory. In: Proceedings of the ninth European conference on computer systems. ACM, p 14
Mohan C, Haderle D, Lindsay B, Pirahesh H, Schwarz P (1992) ARIES: a transaction recovery method supporting fine-granularity locking and partial rollbacks using write-ahead logging. ACM Trans Database Syst (TODS) 17(1):94–162
Fio - Flexible I/O Tester Synthetic Benchmark (n.d.) http://www.storagereview.com/fio_flexible_i_o_tester_synthetic_benchmark. Accessed 21 Dec 2016
Filebench (n.d.) https://github.com/filebench/filebench/wiki. Accessed 5 Jan 2018
Intel corporation: Intel 64 and IA-32 architectures software developers manual volume 3B: system programming guide, part 2, pp 17–41. https://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-vol-3b-part-2-manual.pdf
The Kernels Command-line Parameters (n.d.) https://www.kernel.org/doc/html/v4.10/admin-guide/kernel-parameters.html. Accessed 7 Aug 2016
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
About this article
Cite this article
Kalita, C., Barua, G. & Sehgal, P. DurableFS: a file system for NVRAM. CSIT 7, 277–286 (2019). https://doi.org/10.1007/s40012-019-00215-0
Received:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s40012-019-00215-0