GoJournal: A verified, concurrent, crash-safe journaling system

Tej Chajed, Joseph Tassarotti, Mark Theng, Ralf Jung, M. Frans Kaashoek, Nickolai Zeldovich

Research output: Chapter in Book/Report/Conference proceedingConference contribution

Abstract

The main contribution of this paper is GoJournal, a verified, concurrent journaling system that provides atomicity for storage applications, together with Perennial 2.0, a framework for formally specifying and verifying concurrent crash-safe systems. GoJournal’s goal is to bring the advantages of journaling for code to specs and proofs. Perennial 2.0 makes this possible by introducing several techniques to formalize GoJournal’s specification and to manage the complexity in the proof of GoJournal’s implementation. Lifting predicates and crash framing make the specification easy to use for developers, and logically atomic crash specifications allow for modular reasoning in GoJournal, making the proof tractable despite complex concurrency and crash interleavings. GoJournal is implemented in Go, and Perennial is implemented in the Coq proof assistant. While verifying GoJournal, we found one serious concurrency bug, even though GoJournal has many unit tests. We built a functional NFSv3 server, called GoNFS, to use GoJournal. Performance experiments show that GoNFS provides similar performance (e.g., at least 90% throughput across several benchmarks on an NVMe disk) to Linux’s NFS server exporting an ext4 file system, suggesting that GoJournal is a competitive journaling system. We also verified a simple NFS server using GoJournal’s specs, which confirms that they are helpful for application verification: a significant part of the proof doesn’t have to consider concurrency and crashes.

Original languageEnglish (US)
Title of host publicationProceedings of the 15th USENIX Symposium on Operating Systems Design and Implementation, OSDI 2021
PublisherUSENIX Association
Pages423-439
Number of pages17
ISBN (Electronic)9781939133229
StatePublished - 2021
Event15th USENIX Symposium on Operating Systems Design and Implementation, OSDI 2021 - Virtual, Online
Duration: Jul 14 2021Jul 16 2021

Publication series

NameProceedings of the 15th USENIX Symposium on Operating Systems Design and Implementation, OSDI 2021

Conference

Conference15th USENIX Symposium on Operating Systems Design and Implementation, OSDI 2021
CityVirtual, Online
Period7/14/217/16/21

ASJC Scopus subject areas

  • Computer Networks and Communications
  • Hardware and Architecture
  • Information Systems

Fingerprint

Dive into the research topics of 'GoJournal: A verified, concurrent, crash-safe journaling system'. Together they form a unique fingerprint.

Cite this