Engineering / advanced
From files to durable blocks
Connect filesystem metadata, write ordering, device behavior, and failure recovery to the durability promises applications need.
Your route through engineering
Follow the path or begin with a question. Every lesson is open.
Your place, at your pace. Progress is optional and saved only in this browser when available.
Read / explore / reason
Inside this module
Module 01 advanced
From files to durable blocks
Connect filesystem metadata, write ordering, device behavior, and failure recovery to the durability promises applications need.
- 01
Inodes, extents, and the names that find them
Separate file identity, directory names, and block mappings before tracing a read or explaining hard links and sparse files.
23 min - 02
Allocation decisions and the cost of fragmented space
Distinguish free-space fragmentation from file fragmentation, explain delayed allocation, and evaluate placement against actual workload costs.
24 min - 03
The page cache is a queue before it is durable storage
Trace buffered writes through dirty memory, allocation, writeback, and device completion while measuring sustained rather than cached throughput.
24 min - 04
Journaling protects a filesystem invariant, not every transaction
Reason about journal commit, replay, and checkpointing while separating structural recovery from an application's multi-file consistency contract.
26 min - 05
Copy-on-write roots and the storage that snapshots retain
Follow new data and tree paths to a committed root, then account for shared blocks, snapshot retention, and application consistency boundaries.
26 min - 06
Checksums detect disagreement; redundancy supplies a repair source
Separate detection, authentication, localization, and repair while reasoning about checksum coverage, scrubbing, and correlated failure.
25 min - 07
Persist the file, then persist the name that publishes it
Derive a Linux local-filesystem replacement protocol using checked writes, file synchronization, rename, and directory synchronization.
28 min - 08
Flash translation, write amplification, and honest persistence
Connect erase-before-reuse flash, garbage collection, wear, and device-cache ordering without treating logical block writes as physical cell placement.
27 min - 09
Queue depth buys overlap until a bottleneck buys waiting
Relate application concurrency, block queues, service latency, and throughput while distinguishing device parallelism from time spent waiting.
26 min - 10
Crash experiments that test a stated recovery invariant
Design disposable, reproducible persistence experiments with explicit fault models, acknowledgment logs, allowed states, and minimized failing traces.
30 min