Space Map

Space map 是 ZFS 的 free-space manager:把 device 切成 metaslabs,on disk 用 log 記錄 range updates,in memory replay 成 balanced tree。

storage pool
 ├─ metaslab 0 → space map 0
 ├─ metaslab 1 → space map 1
 └─ metaslab 2 → space map 2

How It Works

  • metaslab:把巨大 pool 分區,避免每次掃全域 free-space state。
  • on-disk log:append allocate/free events,以 (start, count) 表示 ranges。
  • in-memory tree:載入 metaslab 時 replay log,建立可查詢、可 merge/split 的 free-range tree。
on-disk space-map log → replay → in-memory balanced tree

Tradeoff

Space map 減少大型 storage pool 的 scattered bitmap writes,適合 ZFS 這種 COW / snapshot-heavy 系統。代價是 metaslab selection、log replay、range coalescing、transaction integration 都更複雜。

它不是 general journaling;space map 是 free-space metadata 的 log-style representation。