Extent

Extent 是「一段連續 physical blocks」的 range metadata:

start block + block count

一個 file 可由多個 extents 組成;每段內部連續,段與段之間可分散。

file = extent A + extent B + extent C

How It Works

FCB / inode 保存 extent list 或 extent tree:

logical 0..99    → physical 1000, count 100
logical 100..179 → physical 8000, count 80

找 logical block 時,先找所在 extent,再用 extent start + offset 得到 physical block。


Tradeoff

  • 比純 D-OS-Ch14da-Contiguous_Allocation 更容易成長:file 長大時新增 extent。
  • 比每 block 一個 pointer 更省 metadata:一筆 extent 可代表很多 blocks。
  • 仍可能 fragmentation:extent 太多會降低 locality;extent 太大則可能浪費尾端空間。

Extent 是現代 file systems 常用折衷:metadata 小、sequential I/O 好、growth 彈性夠。