All File Systems Are Not Created Equal: On the Complexity of Crafting Crash-Consistent Applications
Created on 2023-06-13T03:52:31-05:00
BOB: Attempts to break software by re-ordering the block operations on the filesystem.
ALICE: Attempts to analyze how software treats the filesystem. Creates traces of file operations so a program can be analyzed for filesystem assumptions that may be broken.
Common Linux filesystems exhibit wildly different failure modes depending on configuration.
Assumptions
Write atomicity: An assumption that writes of a given size will be persisted in their entirety. For example, 512 byte sectors of a filesystem.
Orderred commits: An assumption that changes are made in a given order; such as a file is created, then it is written, then it is renamed, and exactly in that way.
Durability: Data we expected to have written to disk actually was.
Failures
Size atomicity: When updates are not atomic the size of a file might be updated (incorrectly) where corrupt data exists in the new space rather than data we intended to write.
Content atomicity: When part of the intended content is written and the rest is garbage. The system failed in the middle of the write.