Gojournal gives a storage system efficient, atomic writes
4
Current approaches cannot handle a system of this complexity
5
Contributions
6
Gojournal writes operations atomically to disk
7
Operations can concurrently manipulate objects within a block
8
Specification challenge: what do concurrently committed operations do?
9
Sequential journaling only maintains old and next state
10
An operation's specification only refers to its disk footprint
11
Introduce assertion for operation's view of disk
12
Key idea: operations manipulate an in-memory view of each object
13
Gojournal has a modular implementation and proof
14
Write-ahead log implements the core atomicity of the journal
15
Writes are buffered before being logged
16
Challenge 1: Reads can observe unstable writes
17
Object layer implements sub-block object access
18
Challenge 2: Reads and writes can proceed concurrently
19
Concurrent writes are unsafe due to read- modify-write sequence
20
Implementation overview
21
Experimental setup
22
GONFS gets comparable performance even with a single client
23
Gojournal allows GONFS to scale with number of clients
24
Concurrency in the journal matters
25
Summary
Description:
Explore a verified, concurrent, crash-safe journaling system called GoJournal in this OSDI '21 conference talk. Dive into the main contribution of GoJournal and its companion framework, Perennial 2.0, which enables formal specification and verification of concurrent crash-safe systems. Learn about the techniques introduced to formalize GoJournal's specification and manage implementation proof complexity, including lifting predicates, crash framing, and logically atomic crash specifications. Discover how GoJournal, implemented in Go, was used to build a functional NFSv3 server called GoNFS, and examine performance experiments comparing GoNFS to Linux's NFS server. Gain insights into the challenges of concurrent and crash-safe systems, the modular implementation and proof of GoJournal, and the benefits of its approach for application verification.
GoJournal - A Verified, Concurrent, Crash-Safe Journaling System