All File Systems Are Not Created Equal: On the Complexity of Crafting Crash-Consistent Applications

Created on 2023-06-13T03:52:31-05:00

Return to the Index

This card pertains to a resource available on the internet.

This card can also be read via Gemini.

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.