From files to durable blocks

Connect filesystem metadata, write ordering, device behavior, and failure recovery to the durability promises applications need.

10 published lessons1 module259 min of guided study
  1. 01
    From files to durable blocksadvanced · 10 lessons

Follow the path or begin with a question. Every lesson is open.

Your notebook0 of 10 lessons completed

Your place, at your pace. Progress is optional and saved only in this browser when available.

Inside this module

Each lesson includes an interactive lab

From files to durable blocks

Connect filesystem metadata, write ordering, device behavior, and failure recovery to the durability promises applications need.

  1. 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
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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
  7. 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
  8. 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
  9. 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. 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
All engineering modules